Jetzt habe ich schon wieder einen Absturz, der mit der Deinstallation des SearchPanels behoben ist, nun aber auf allen meiner Laz-Installationen auf Windows, bei denen das Panel verwendet wird. Auch meine Linux-VM meldet eine Access-Violation.
Zum Nachvollziehen öffne das beigefügte einfache Projekt in der IDE. Dann erzeuge einfach ein neues Projekt (File > New > Project > Application). Dann werden das Editor- und das Designer-Fenster weiß, und nach ein paar Sekunden kommt eine Fehlermeldung mit "Privileged instruction". Ich muss die IDE mit dem Taskmanager beenden. Wenn ich das SearchPanel im Menü "Search" deaktiviere oder gleich deinstalliere, tritt der Fehler nicht mehr auf.
Noch etwas: Um den Fehler einzukreisen habe ich deinen Debug-Modus aktiviert ({$DEFINE DebugSayt}
). Nach Neukompilieren der IDE wurde Laz nicht wieder neu gestartet. Ich fand dann, dass dein Debug-Modus per Writeln Meldungen auf den Bildschirm schreibt. Unter Windows ist das tödlich... Besser: Packe LazLoggerBase mit in die uses-Liste und nimm DebugLn statt WriteLn:
Code: Alles auswählen
...
implementation
{$R searchpanel_images.res}
uses
{$IFDEF DebugSayt}LazLoggerBase,{$ENDIF}
Math;
{$IFDEF DebugSayt}
procedure DebugSayt(Sendr: string; Msg: string);
begin
debugln(['SAYT: ', Sendr, ': ', Msg]);
end;
{$ENDIF}
...
Hier das Log-File:
SAYT: Create:
SAYT: LoadStates:
SAYT: LoadState:
SAYT: Destroy: -1
SAYT: Exception LoadStates:
Hint: (lazarus) [TBuildManager.SetBuildTarget] Old=x86_64-win64-win32 New=x86_64-win64-win32 Changed: OS/CPU=True LCL=False
SAYT: SourceWindowCreated:
SAYT: OnProjectOpen: -1
SAYT: DoChangeDocking: -1
SAYT: AllocControls:
----------------
Hint: (lazarus) [TMainIDE.DoOpenProjectFile] "D:\Prog_Lazarus\bug_tracker\39911 - canvas.clear\wp-test--\project1.lpi"
SAYT: SourceWindowDestroyed:
SAYT: SourceWindowCreated:
InitOpenedProjectFile select form in designer: Form1:TForm1 TDesigner
SAYT: OnProjectOpen: -1
SAYT: DoChangeDocking: -1
SAYT: SourceWindowDestroyed:
SAYT: SourceWindowCreated:
SAYT: OnProjectOpen: -1
SAYT: DoChangeDocking: -1
TApplication.HandleException: EAccessViolation
Access violation
Stack trace:
$0000000101198A91 DOCHANGEPANELVISIBILITY, line 462 of idesearchpanel.pas
$0000000101198F0E ONPROJECTOPEN, line 531 of idesearchpanel.pas
$000000010053AD08 DoCallProjectChangedHandler, line 725 of lazideintf.pas
$0000000100982B7C $fin$000000F3, line 3690 of sourcefilemanager.pas
$0000000100982FF1 InitNewProject, line 3632 of sourcefilemanager.pas
$00000001000856E7 DoNewProject, line 6407 of main.pp
$000000010097C9E1 NewOther, line 2346 of sourcefilemanager.pas
$0000000100075846 mnuNewOtherClicked, line 3223 of main.pp
$000000010053522F MenuItemClick, line 556 of menuintf.pas
$0000000100539810 MenuItemClick, line 1714 of menuintf.pas
$00000001002600AB Click, line 83 of include/menuitem.inc
$0000000100260C5C DoClicked, line 296 of include/menuitem.inc
$0000000100011B41
$00000001001DDFF4 DoWindowProc, line 2155 of win32/win32callback.inc
$00000001001DFD47 WindowProc, line 2786 of win32/win32callback.inc
$00000001003C6AF0 CustomFormWndProc, line 412 of win32/win32wsforms.pp
$00007FFE17A88161
FreeFormEditor: FormEditor1=TFormEditor
[TJITComponentList.DestroyJITComponent] ERROR destroying component Error: Object reference is Nil
Stack trace:
$000000010060C5B7 SetCustomForm, line 1168 of ../designer/controlselection.pp
$0000000100611708 Delete, line 2291 of ../designer/controlselection.pp
$000000010061161F Remove, line 2272 of ../designer/controlselection.pp
$000000010060DBBD Notification, line 1456 of ../designer/controlselection.pp
$00000001000DF197
$00000001002CC17B Destroy, line 152 of lclclasses.pp
$00000001002248D9 Destroy, line 5201 of include/control.inc
$000000010020D5B3 Destroy, line 6651 of include/wincontrol.inc
$0000