View Issue Details

IDProjectCategoryView StatusLast Update
0028335LazarusDebuggerpublic2015-10-27 17:51
ReporterCyraxAssigned ToMartin Friebe 
PrioritynormalSeverityminorReproducibilityrandom
Status closedResolutionfixed 
PlatformWindows OSServer 2008 R2OS Version6.1.7601 (SP1)
Product Version1.5 (SVN)Product Buildr49366 
Target Version1.6Fixed in Version1.5 (SVN) 
Summary0028335: Sometimes when debugging a program, Lazarus will give "Access Violation" dialog.
DescriptionSee summary, Additional Information and attached log file for more info.



Additional InformationLazarus revision 49366
FPC revision 31115
 
FPC make commands:
clean
all
install
OPT=-gw2 -godwarfsets -godwarfmethodclassprefix -gl -O- -OoNO -Xs- -Si- -vb -XX -CX -dTEST_WIN32_SEH
COMPILER_OPTIONS=-gw2 -godwarfsets -godwarfmethodclassprefix -gl -O- -OoNO -Xs- -Si- -vb -XX -CX -dTEST_WIN32_SEH
INSTALL_PREFIX=F:\free_pascal_and_lazarus\fpc\i386\trunk\binary\fpc_trunk
UPXPROG=echo
IDE=1
REVSTR=31115
OPTNEW=-godwarfmethodclassprefix
 
Lazarus make commands:
clean
all
OPT=-gw2 -godwarfsets -godwarfmethodclassprefix -gl -gh -O- -OoNO -Xs- -Si- -vb -XX -CX -dTEST_WIN32_SEH -dHEAPTRC_WINDOW -dDBG_WITH_DEBUGGER_DEBUG
UPXPROG=echo
USESVN2REVISIONINC=0
TagsNo tags attached.
Fixed in Revision49476
LazTarget1.6
WidgetsetWin32/Win64
Attached Files
  • lazarus-log-excerpt2.txt (9,575 bytes)
    >> Run OnIdle
      DebugDataMonitor: >>ENTER: TSnapshotManager.DoDebuggerIdle  New-State=Pause
        Queueing (Recurse-Count=0) at pos=0 cnt=0 State=dsPause Lock=0 Forced=False Prior=2: "TGDBMIDebuggerCommandStackFrames"
      DebugDataMonitor: <<EXIT: TSnapshotManager.DoDebuggerIdle
      OnIdle: UnLock
      TGDBMIDebugger.UnLockCommandProcessing: Execute RunQueue 
        Executing (Recurse-Count=0) queued= 0 CmdPrior=2 CmdMinRunLvl=-1 : "TGDBMIDebuggerCommandStackFrames" State=dsPause PauseWaitState=0
          >> TCmdLineDebugger.SendCmdLn "-stack-list-arguments 1 0 0"
          Leaving Queue with count: 1 Recurse-Count=1 State=dsPause
          << TCmdLineDebugger.ReadLn "^done,stack-args=[frame={level="0",args=[]}]"
          << TCmdLineDebugger.ReadLn "(gdb) "
          >> TCmdLineDebugger.SendCmdLn "-stack-list-frames 0 0"
          << TCmdLineDebugger.ReadLn "^done,stack=[frame={level="0",addr="0x0040166b",func="main",file="Project1.pas",fullname="U:\\32-bit\\kielet\\pascal\\free_pascal\\lazarus\\projects\\research\\source 20\\lazarus debugger test 00\\Project1.pas",line="20"}]"
          << TCmdLineDebugger.ReadLn "(gdb) "
        Exec done
        Executing (Recurse-Count=0) queued= 0 CmdPrior=0 CmdMinRunLvl=0 : "TGDBMIDebuggerCommandExecute: -exec-next" State=dsPause PauseWaitState=0
          >> TCmdLineDebugger.SendCmdLn "-data-evaluate-expression $fp"
          << TCmdLineDebugger.ReadLn "^done,value="0x156ff60""
          << TCmdLineDebugger.ReadLn "(gdb) "
          >> TCmdLineDebugger.SendCmdLn "-exec-next"
          << TCmdLineDebugger.ReadLn "^running"
          << TCmdLineDebugger.ReadLn "*running,thread-id="all""
          << TCmdLineDebugger.ReadLn "(gdb) "
          DebuggerState: Setting to dsRun, from dsPause
            TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsRun
            TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
            TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsRun
            TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
            TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsRun
            TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
            TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsRun
              DebugDataMonitor: TIdeCallStackMonitor.CallStackClear
            TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
            TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsRun
            TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
            TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsRun
            TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
            TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsRun
            TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
            TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsRun
            TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
            TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsRun
            TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
            TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsRun
            TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
            DebugDataMonitor: >>ENTER: TCurrentCallStackList.GetEntryForThread: ThreadId=1
            DebugDataMonitor: <<EXIT: TCurrentCallStackList.GetEntryForThread
            DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=Run
            DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
          DebuggerState: Finished dsRun
          << TCmdLineDebugger.ReadLn "~"[Inferior 1 (process 5640) exited normally]\n""
          << TCmdLineDebugger.ReadLn "=thread-exited,id="1",group-id="i1""
          << TCmdLineDebugger.ReadLn "=thread-group-exited,id="i1",exit-code="0""
          << TCmdLineDebugger.ReadLn "*stopped,reason="exited-normally""
          << TCmdLineDebugger.ReadLn "(gdb) "
          DebuggerState: Setting to dsStop, from dsRun
            TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsStop
            TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
            TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsStop
            TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
            TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsStop
            TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
            TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsStop
            TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
            Queueing (Recurse-Count=1) at pos=0 cnt=0 State=dsStop Lock=0 Forced=False Prior=10: "TGDBMIDebuggerCommandBreakRemove: BreakId=8"
            TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsStop
            TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
            TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsStop
            TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
            TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsStop
            TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
            TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsStop
            TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
            TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsStop
            TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
            TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsStop
            TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
            DebugDataMonitor: >>ENTER: TCurrentCallStackList.GetEntryForThread: ThreadId=0
            DebugDataMonitor: <<EXIT: TCurrentCallStackList.GetEntryForThread
            DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=Stop
            DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
            Canceling: "TGDBMIDebuggerCommandBreakRemove: BreakId=8"
            Canceling: "TGDBMIDebuggerCommandExecute: -exec-next"
            >> TCmdLineDebugger.SendCmdLn "kill"
            >> TCmdLineDebugger.SendCmdLn "-gdb-exit"
            DebuggerState: Setting to dsNone, from dsStop
              TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsNone
              TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
              TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsNone
              TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
              TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsNone
              TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
              TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsNone
              TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
              TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsNone
              TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
              TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsNone
              TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
              TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsNone
              TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
              TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsNone
              TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
              TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsNone
              TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
              TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsNone
              TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
              DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=None
              DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
            DebuggerState: Finished dsNone
          DebuggerState: Finished dsStop
        Exec done
        Leaving Queue with count: 0 Recurse-Count=0 State=dsDestroying
      TGDBMIDebugger.UnLockCommandProcessing: Finished RunQueue
    << Run OnIdle
    >> Run OnIdle
      OnIdle: UnLock
      TApplication.HandleException Access violation
        Stack trace:
        $00000000
        $00C0E06D line 7930 of gdbmidebugger.pp
        $00C0F034 line 8430 of gdbmidebugger.pp
        $00C0FA4D line 8672 of gdbmidebugger.pp
        $007CBCD0 line 5904 of dbgintfdebuggerbase.pp
        $007CC639 line 6076 of dbgintfdebuggerbase.pp
        $007A9AE0 line 2421 of debugmanager.pas
        $007AA0D5 line 2520 of debugmanager.pas
        $00452A05 line 3300 of main.pp
        $0080EE75 line 8082 of sourceeditor.pp
        $007FDDF4 line 3594 of sourceeditor.pp
        $009E73A9 line 6978 of synedit.pp
        $009E49AC line 6363 of synedit.pp
        $009D84B3 line 2860 of synedit.pp
        $00590C47 line 5610 of include/wincontrol.inc
        $00590EE3 line 5741 of include/wincontrol.inc
        $005933AC line 7066 of include/wincontrol.inc
      ### TCodeToolManager.HandleException: "cursor position is beyond scan range (last at p=301,line=20,col=5)" at Line=21 Col=1 in "U:\32-bit\kielet\pascal\free_pascal\lazarus\projects\research\source 20\lazarus debugger test 00\Project1.pas"
      ### TCodeToolManager.HandleException: "cursor pos outside of code" at Line=18 Col=24 in "U:\32-bit\kielet\pascal\free_pascal\lazarus\projects\research\source 20\lazarus debugger test 00\Project1.pas"
    
    lazarus-log-excerpt2.txt (9,575 bytes)
  • lazarus-log.txt (8,822 bytes)
    >> Run OnIdle
      DebugDataMonitor: >>ENTER: TSnapshotManager.DoDebuggerIdle  New-State=Pause
        Queueing (Recurse-Count=0) at pos=0 cnt=0 State=dsPause Lock=0 Forced=False Prior=2: "TGDBMIDebuggerCommandStackDepth:"
      DebugDataMonitor: <<EXIT: TSnapshotManager.DoDebuggerIdle
      OnIdle: UnLock
      TGDBMIDebugger.UnLockCommandProcessing: Execute RunQueue 
        Executing (Recurse-Count=0) queued= 0 CmdPrior=2 CmdMinRunLvl=-1 : "TGDBMIDebuggerCommandStackDepth:" State=dsPause PauseWaitState=0
          >> TCmdLineDebugger.SendCmdLn "-stack-info-depth 11"
          Leaving Queue with count: 1 Recurse-Count=1 State=dsPause
          << TCmdLineDebugger.ReadLn "^done,depth="1""
          << TCmdLineDebugger.ReadLn "(gdb) "
          DebugDataMonitor: TCurrentCallStack.SetCountValidity: FThreadId=1 AValidity=ddsValid
        Exec done
        Executing (Recurse-Count=0) queued= 0 CmdPrior=0 CmdMinRunLvl=0 : "TGDBMIDebuggerCommandExecute: -exec-next" State=dsPause PauseWaitState=0
          >> TCmdLineDebugger.SendCmdLn "-data-evaluate-expression $fp"
          << TCmdLineDebugger.ReadLn "^done,value="0x156ff60""
          << TCmdLineDebugger.ReadLn "(gdb) "
          >> TCmdLineDebugger.SendCmdLn "-exec-next"
          << TCmdLineDebugger.ReadLn "^running"
          << TCmdLineDebugger.ReadLn "*running,thread-id="all""
          << TCmdLineDebugger.ReadLn "(gdb) "
          DebuggerState: Setting to dsRun, from dsPause
            TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsRun
            TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
            TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsRun
            TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
            TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsRun
            TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
            TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsRun
              DebugDataMonitor: TIdeCallStackMonitor.CallStackClear
            TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
            TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsRun
            TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
            TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsRun
            TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
            TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsRun
            TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
            TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsRun
            TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
            TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsRun
            TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
            TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsRun
            TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
            DebugDataMonitor: >>ENTER: TCurrentCallStackList.GetEntryForThread: ThreadId=1
            DebugDataMonitor: <<EXIT: TCurrentCallStackList.GetEntryForThread
            DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=Run
            DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
          DebuggerState: Finished dsRun
          << TCmdLineDebugger.ReadLn "~"[Inferior 1 (process 9504) exited normally]\n""
          << TCmdLineDebugger.ReadLn "=thread-exited,id="1",group-id="i1""
          << TCmdLineDebugger.ReadLn "=thread-group-exited,id="i1",exit-code="0""
          << TCmdLineDebugger.ReadLn "*stopped,reason="exited-normally""
          << TCmdLineDebugger.ReadLn "(gdb) "
          DebuggerState: Setting to dsStop, from dsRun
            TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsStop
            TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
            TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsStop
            TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
            TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsStop
            TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
            TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsStop
            TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
            Queueing (Recurse-Count=1) at pos=0 cnt=0 State=dsStop Lock=0 Forced=False Prior=10: "TGDBMIDebuggerCommandBreakRemove: BreakId=8"
            TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsStop
            TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
            TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsStop
            TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
            TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsStop
            TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
            TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsStop
            TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
            TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsStop
            TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
            TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsStop
            TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
            DebugDataMonitor: >>ENTER: TCurrentCallStackList.GetEntryForThread: ThreadId=0
            DebugDataMonitor: <<EXIT: TCurrentCallStackList.GetEntryForThread
            DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=Stop
            DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
            Canceling: "TGDBMIDebuggerCommandBreakRemove: BreakId=8"
            Canceling: "TGDBMIDebuggerCommandExecute: -exec-next"
            >> TCmdLineDebugger.SendCmdLn "kill"
            >> TCmdLineDebugger.SendCmdLn "-gdb-exit"
            DebuggerState: Setting to dsNone, from dsStop
              TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsNone
              TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
              TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsNone
              TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
              TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsNone
              TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
              TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsNone
              TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
              TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsNone
              TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
              TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsNone
              TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
              TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsNone
              TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
              TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsNone
              TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
              TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsNone
              TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
              TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsNone
              TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
              DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=None
              DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
            DebuggerState: Finished dsNone
          DebuggerState: Finished dsStop
        Exec done
        Leaving Queue with count: 0 Recurse-Count=0 State=dsDestroying
      TGDBMIDebugger.UnLockCommandProcessing: Finished RunQueue
    << Run OnIdle
    >> Run OnIdle
      OnIdle: UnLock
      TApplication.HandleException Access violation
        Stack trace:
        $00000000
        $00C1558D line 7951 of gdbmidebugger.pp
        $00C16554 line 8451 of gdbmidebugger.pp
        $00C16F6D line 8693 of gdbmidebugger.pp
        $007CB450 line 5913 of dbgintfdebuggerbase.pp
        $007CBDB9 line 6085 of dbgintfdebuggerbase.pp
        $007A8A40 line 2421 of debugmanager.pas
        $007A9035 line 2520 of debugmanager.pas
        $00452A85 line 3300 of main.pp
        $0080E5F5 line 8083 of sourceeditor.pp
        $007FD574 line 3595 of sourceeditor.pp
        $009E6B59 line 6978 of synedit.pp
        $009E415C line 6363 of synedit.pp
        $009D7C63 line 2860 of synedit.pp
        $00590D07 line 5610 of include/wincontrol.inc
        $00590FA3 line 5741 of include/wincontrol.inc
        $0059346C line 7066 of include/wincontrol.inc
    
    lazarus-log.txt (8,822 bytes)
  • gdbmidebugger.pp.patch (614 bytes)
    Index: components/lazdebuggergdbmi/gdbmidebugger.pp
    ===================================================================
    --- components/lazdebuggergdbmi/gdbmidebugger.pp	(revision 49400)
    +++ components/lazdebuggergdbmi/gdbmidebugger.pp	(working copy)
    @@ -7861,7 +7861,8 @@
           LockCommandProcessing;
           FInIdle := True;
           try
    -        OnIdle(Self);
    +        if not (State in [dsError, dsDestroying]) then
    +          OnIdle(Self);
           finally
             R := (FCommandQueue.Count > 0) and (FCommandProcessingLock = 1) and FRunQueueOnUnlock;
             DebugLn(DBGMI_QUEUE_DEBUG, ['OnIdle: UnLock']);
    

Relationships

related to 0028306 closedJoost van der Sluis Debugger hardly usable after r49328 

Activities

Cyrax

2015-06-21 09:43

reporter  

lazarus-log-excerpt2.txt (9,575 bytes)
>> Run OnIdle
  DebugDataMonitor: >>ENTER: TSnapshotManager.DoDebuggerIdle  New-State=Pause
    Queueing (Recurse-Count=0) at pos=0 cnt=0 State=dsPause Lock=0 Forced=False Prior=2: "TGDBMIDebuggerCommandStackFrames"
  DebugDataMonitor: <<EXIT: TSnapshotManager.DoDebuggerIdle
  OnIdle: UnLock
  TGDBMIDebugger.UnLockCommandProcessing: Execute RunQueue 
    Executing (Recurse-Count=0) queued= 0 CmdPrior=2 CmdMinRunLvl=-1 : "TGDBMIDebuggerCommandStackFrames" State=dsPause PauseWaitState=0
      >> TCmdLineDebugger.SendCmdLn "-stack-list-arguments 1 0 0"
      Leaving Queue with count: 1 Recurse-Count=1 State=dsPause
      << TCmdLineDebugger.ReadLn "^done,stack-args=[frame={level="0",args=[]}]"
      << TCmdLineDebugger.ReadLn "(gdb) "
      >> TCmdLineDebugger.SendCmdLn "-stack-list-frames 0 0"
      << TCmdLineDebugger.ReadLn "^done,stack=[frame={level="0",addr="0x0040166b",func="main",file="Project1.pas",fullname="U:\\32-bit\\kielet\\pascal\\free_pascal\\lazarus\\projects\\research\\source 20\\lazarus debugger test 00\\Project1.pas",line="20"}]"
      << TCmdLineDebugger.ReadLn "(gdb) "
    Exec done
    Executing (Recurse-Count=0) queued= 0 CmdPrior=0 CmdMinRunLvl=0 : "TGDBMIDebuggerCommandExecute: -exec-next" State=dsPause PauseWaitState=0
      >> TCmdLineDebugger.SendCmdLn "-data-evaluate-expression $fp"
      << TCmdLineDebugger.ReadLn "^done,value="0x156ff60""
      << TCmdLineDebugger.ReadLn "(gdb) "
      >> TCmdLineDebugger.SendCmdLn "-exec-next"
      << TCmdLineDebugger.ReadLn "^running"
      << TCmdLineDebugger.ReadLn "*running,thread-id="all""
      << TCmdLineDebugger.ReadLn "(gdb) "
      DebuggerState: Setting to dsRun, from dsPause
        TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsRun
        TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
        TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsRun
        TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
        TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsRun
        TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
        TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsRun
          DebugDataMonitor: TIdeCallStackMonitor.CallStackClear
        TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
        TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsRun
        TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
        TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsRun
        TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
        TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsRun
        TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
        TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsRun
        TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
        TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsRun
        TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
        TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsRun
        TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
        DebugDataMonitor: >>ENTER: TCurrentCallStackList.GetEntryForThread: ThreadId=1
        DebugDataMonitor: <<EXIT: TCurrentCallStackList.GetEntryForThread
        DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=Run
        DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
      DebuggerState: Finished dsRun
      << TCmdLineDebugger.ReadLn "~"[Inferior 1 (process 5640) exited normally]\n""
      << TCmdLineDebugger.ReadLn "=thread-exited,id="1",group-id="i1""
      << TCmdLineDebugger.ReadLn "=thread-group-exited,id="i1",exit-code="0""
      << TCmdLineDebugger.ReadLn "*stopped,reason="exited-normally""
      << TCmdLineDebugger.ReadLn "(gdb) "
      DebuggerState: Setting to dsStop, from dsRun
        TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsStop
        TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
        TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsStop
        TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
        TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsStop
        TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
        TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsStop
        TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
        Queueing (Recurse-Count=1) at pos=0 cnt=0 State=dsStop Lock=0 Forced=False Prior=10: "TGDBMIDebuggerCommandBreakRemove: BreakId=8"
        TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsStop
        TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
        TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsStop
        TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
        TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsStop
        TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
        TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsStop
        TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
        TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsStop
        TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
        TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsStop
        TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
        DebugDataMonitor: >>ENTER: TCurrentCallStackList.GetEntryForThread: ThreadId=0
        DebugDataMonitor: <<EXIT: TCurrentCallStackList.GetEntryForThread
        DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=Stop
        DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
        Canceling: "TGDBMIDebuggerCommandBreakRemove: BreakId=8"
        Canceling: "TGDBMIDebuggerCommandExecute: -exec-next"
        >> TCmdLineDebugger.SendCmdLn "kill"
        >> TCmdLineDebugger.SendCmdLn "-gdb-exit"
        DebuggerState: Setting to dsNone, from dsStop
          TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsNone
          TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
          TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsNone
          TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
          TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsNone
          TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
          TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsNone
          TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
          TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsNone
          TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
          TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsNone
          TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
          TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsNone
          TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
          TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsNone
          TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
          TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsNone
          TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
          TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsNone
          TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
          DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=None
          DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
        DebuggerState: Finished dsNone
      DebuggerState: Finished dsStop
    Exec done
    Leaving Queue with count: 0 Recurse-Count=0 State=dsDestroying
  TGDBMIDebugger.UnLockCommandProcessing: Finished RunQueue
<< Run OnIdle
>> Run OnIdle
  OnIdle: UnLock
  TApplication.HandleException Access violation
    Stack trace:
    $00000000
    $00C0E06D line 7930 of gdbmidebugger.pp
    $00C0F034 line 8430 of gdbmidebugger.pp
    $00C0FA4D line 8672 of gdbmidebugger.pp
    $007CBCD0 line 5904 of dbgintfdebuggerbase.pp
    $007CC639 line 6076 of dbgintfdebuggerbase.pp
    $007A9AE0 line 2421 of debugmanager.pas
    $007AA0D5 line 2520 of debugmanager.pas
    $00452A05 line 3300 of main.pp
    $0080EE75 line 8082 of sourceeditor.pp
    $007FDDF4 line 3594 of sourceeditor.pp
    $009E73A9 line 6978 of synedit.pp
    $009E49AC line 6363 of synedit.pp
    $009D84B3 line 2860 of synedit.pp
    $00590C47 line 5610 of include/wincontrol.inc
    $00590EE3 line 5741 of include/wincontrol.inc
    $005933AC line 7066 of include/wincontrol.inc
  ### TCodeToolManager.HandleException: "cursor position is beyond scan range (last at p=301,line=20,col=5)" at Line=21 Col=1 in "U:\32-bit\kielet\pascal\free_pascal\lazarus\projects\research\source 20\lazarus debugger test 00\Project1.pas"
  ### TCodeToolManager.HandleException: "cursor pos outside of code" at Line=18 Col=24 in "U:\32-bit\kielet\pascal\free_pascal\lazarus\projects\research\source 20\lazarus debugger test 00\Project1.pas"
lazarus-log-excerpt2.txt (9,575 bytes)

Cyrax

2015-06-21 09:46

reporter   ~0084602

Packages that are installed when this happens : turbopoweriprodsgn.

So maybe this is related to this bug report (http://bugs.freepascal.org/view.php?id=28306) somehow?

I have disabled/removed changes which came with revision 49328.

Cyrax

2015-06-21 10:11

reporter   ~0084604

Last edited: 2015-06-22 06:16

View 5 revisions

[Window Title]
The debugger experienced an unknown condition

[Content]
Press "Ignore" to continue debugging. This may NOT be safe. Press "Abort" to stop the debugger.
Exception: EAccessViolation with message "Access violation"
Context: TGDBMIDebuggerCommandDisassemble. State: dsPause

  $00000000
  $007C0387 line 2159 of dbgintfdebuggerbase.pp
  $00C00A3C line 4526 of gdbmidebugger.pp
  $00C15A0C line 11135 of gdbmidebugger.pp
  $00C0B8C8 line 7784 of gdbmidebugger.pp
  $00C0C11D line 7930 of gdbmidebugger.pp

[Abort] [Ignore]

---

This error dialog pops up when assembler dialog is left open from previous debugging session.

EDIT : This is fixed since r49396. But "Access Violation" dialog problem persist. Attached new log.

Cyrax

2015-06-22 06:14

reporter  

lazarus-log.txt (8,822 bytes)
>> Run OnIdle
  DebugDataMonitor: >>ENTER: TSnapshotManager.DoDebuggerIdle  New-State=Pause
    Queueing (Recurse-Count=0) at pos=0 cnt=0 State=dsPause Lock=0 Forced=False Prior=2: "TGDBMIDebuggerCommandStackDepth:"
  DebugDataMonitor: <<EXIT: TSnapshotManager.DoDebuggerIdle
  OnIdle: UnLock
  TGDBMIDebugger.UnLockCommandProcessing: Execute RunQueue 
    Executing (Recurse-Count=0) queued= 0 CmdPrior=2 CmdMinRunLvl=-1 : "TGDBMIDebuggerCommandStackDepth:" State=dsPause PauseWaitState=0
      >> TCmdLineDebugger.SendCmdLn "-stack-info-depth 11"
      Leaving Queue with count: 1 Recurse-Count=1 State=dsPause
      << TCmdLineDebugger.ReadLn "^done,depth="1""
      << TCmdLineDebugger.ReadLn "(gdb) "
      DebugDataMonitor: TCurrentCallStack.SetCountValidity: FThreadId=1 AValidity=ddsValid
    Exec done
    Executing (Recurse-Count=0) queued= 0 CmdPrior=0 CmdMinRunLvl=0 : "TGDBMIDebuggerCommandExecute: -exec-next" State=dsPause PauseWaitState=0
      >> TCmdLineDebugger.SendCmdLn "-data-evaluate-expression $fp"
      << TCmdLineDebugger.ReadLn "^done,value="0x156ff60""
      << TCmdLineDebugger.ReadLn "(gdb) "
      >> TCmdLineDebugger.SendCmdLn "-exec-next"
      << TCmdLineDebugger.ReadLn "^running"
      << TCmdLineDebugger.ReadLn "*running,thread-id="all""
      << TCmdLineDebugger.ReadLn "(gdb) "
      DebuggerState: Setting to dsRun, from dsPause
        TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsRun
        TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
        TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsRun
        TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
        TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsRun
        TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
        TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsRun
          DebugDataMonitor: TIdeCallStackMonitor.CallStackClear
        TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
        TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsRun
        TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
        TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsRun
        TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
        TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsRun
        TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
        TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsRun
        TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
        TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsRun
        TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
        TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsRun
        TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
        DebugDataMonitor: >>ENTER: TCurrentCallStackList.GetEntryForThread: ThreadId=1
        DebugDataMonitor: <<EXIT: TCurrentCallStackList.GetEntryForThread
        DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=Run
        DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
      DebuggerState: Finished dsRun
      << TCmdLineDebugger.ReadLn "~"[Inferior 1 (process 9504) exited normally]\n""
      << TCmdLineDebugger.ReadLn "=thread-exited,id="1",group-id="i1""
      << TCmdLineDebugger.ReadLn "=thread-group-exited,id="i1",exit-code="0""
      << TCmdLineDebugger.ReadLn "*stopped,reason="exited-normally""
      << TCmdLineDebugger.ReadLn "(gdb) "
      DebuggerState: Setting to dsStop, from dsRun
        TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsStop
        TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
        TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsStop
        TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
        TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsStop
        TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
        TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsStop
        TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
        Queueing (Recurse-Count=1) at pos=0 cnt=0 State=dsStop Lock=0 Forced=False Prior=10: "TGDBMIDebuggerCommandBreakRemove: BreakId=8"
        TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsStop
        TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
        TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsStop
        TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
        TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsStop
        TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
        TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsStop
        TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
        TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsStop
        TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
        TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsStop
        TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
        DebugDataMonitor: >>ENTER: TCurrentCallStackList.GetEntryForThread: ThreadId=0
        DebugDataMonitor: <<EXIT: TCurrentCallStackList.GetEntryForThread
        DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=Stop
        DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
        Canceling: "TGDBMIDebuggerCommandBreakRemove: BreakId=8"
        Canceling: "TGDBMIDebuggerCommandExecute: -exec-next"
        >> TCmdLineDebugger.SendCmdLn "kill"
        >> TCmdLineDebugger.SendCmdLn "-gdb-exit"
        DebuggerState: Setting to dsNone, from dsStop
          TGDBMIThreads: >>ENTER: TGDBMIThreads.DoStateChange  New-State=dsNone
          TGDBMIThreads: <<EXIT: TGDBMIThreads.DoStateChange
          TIdeThreadsMonitor: >>ENTER: TIdeThreadsMonitor.DoStateChange  New-State=dsNone
          TIdeThreadsMonitor: <<EXIT: TIdeThreadsMonitor.DoStateChange
          TGDBMICallStack: >>ENTER: TGDBMICallStack.DoStateChange  New-State=dsNone
          TGDBMICallStack: <<EXIT: TGDBMICallStack.DoStateChange
          TIdeCallStackMonitor: >>ENTER: TIdeCallStackMonitor.DoStateChange  New-State=dsNone
          TIdeCallStackMonitor: <<EXIT: TIdeCallStackMonitor.DoStateChange
          TGDBMILocals: >>ENTER: TGDBMILocals.DoStateChange  New-State=dsNone
          TGDBMILocals: <<EXIT: TGDBMILocals.DoStateChange
          TIdeLocalsMonitor: >>ENTER: TIdeLocalsMonitor.DoStateChange  New-State=dsNone
          TIdeLocalsMonitor: <<EXIT: TIdeLocalsMonitor.DoStateChange
          TGDBMIRegisterSupplier: >>ENTER: TGDBMIRegisterSupplier.DoStateChange  New-State=dsNone
          TGDBMIRegisterSupplier: <<EXIT: TGDBMIRegisterSupplier.DoStateChange
          TIdeRegistersMonitor: >>ENTER: TIdeRegistersMonitor.DoStateChange  New-State=dsNone
          TIdeRegistersMonitor: <<EXIT: TIdeRegistersMonitor.DoStateChange
          TGDBMIWatches: >>ENTER: TGDBMIWatches.DoStateChange  New-State=dsNone
          TGDBMIWatches: <<EXIT: TGDBMIWatches.DoStateChange
          TIdeWatchesMonitor: >>ENTER: TIdeWatchesMonitor.DoStateChange  New-State=dsNone
          TIdeWatchesMonitor: <<EXIT: TIdeWatchesMonitor.DoStateChange
          DebugDataMonitor: >>ENTER: TSnapshotManager.DoStateChange  New-State=None
          DebugDataMonitor: <<EXIT: TSnapshotManager.DoStateChange
        DebuggerState: Finished dsNone
      DebuggerState: Finished dsStop
    Exec done
    Leaving Queue with count: 0 Recurse-Count=0 State=dsDestroying
  TGDBMIDebugger.UnLockCommandProcessing: Finished RunQueue
<< Run OnIdle
>> Run OnIdle
  OnIdle: UnLock
  TApplication.HandleException Access violation
    Stack trace:
    $00000000
    $00C1558D line 7951 of gdbmidebugger.pp
    $00C16554 line 8451 of gdbmidebugger.pp
    $00C16F6D line 8693 of gdbmidebugger.pp
    $007CB450 line 5913 of dbgintfdebuggerbase.pp
    $007CBDB9 line 6085 of dbgintfdebuggerbase.pp
    $007A8A40 line 2421 of debugmanager.pas
    $007A9035 line 2520 of debugmanager.pas
    $00452A85 line 3300 of main.pp
    $0080E5F5 line 8083 of sourceeditor.pp
    $007FD574 line 3595 of sourceeditor.pp
    $009E6B59 line 6978 of synedit.pp
    $009E415C line 6363 of synedit.pp
    $009D7C63 line 2860 of synedit.pp
    $00590D07 line 5610 of include/wincontrol.inc
    $00590FA3 line 5741 of include/wincontrol.inc
    $0059346C line 7066 of include/wincontrol.inc
lazarus-log.txt (8,822 bytes)

Cyrax

2015-06-22 08:02

reporter  

gdbmidebugger.pp.patch (614 bytes)
Index: components/lazdebuggergdbmi/gdbmidebugger.pp
===================================================================
--- components/lazdebuggergdbmi/gdbmidebugger.pp	(revision 49400)
+++ components/lazdebuggergdbmi/gdbmidebugger.pp	(working copy)
@@ -7861,7 +7861,8 @@
       LockCommandProcessing;
       FInIdle := True;
       try
-        OnIdle(Self);
+        if not (State in [dsError, dsDestroying]) then
+          OnIdle(Self);
       finally
         R := (FCommandQueue.Count > 0) and (FCommandProcessingLock = 1) and FRunQueueOnUnlock;
         DebugLn(DBGMI_QUEUE_DEBUG, ['OnIdle: UnLock']);

Cyrax

2015-06-22 08:03

reporter   ~0084630

Attached patch which may fix this issue.

Martin Friebe

2015-06-30 17:41

manager   ~0084786

Please test and close if ok.

Cyrax

2015-10-27 17:51

reporter   ~0086914

This seems to be fixed. Thanks!

Issue History

Date Modified Username Field Change
2015-06-21 09:43 Cyrax New Issue
2015-06-21 09:43 Cyrax Status new => assigned
2015-06-21 09:43 Cyrax Assigned To => Martin Friebe
2015-06-21 09:43 Cyrax File Added: lazarus-log-excerpt2.txt
2015-06-21 09:46 Cyrax Note Added: 0084602
2015-06-21 09:58 Juha Manninen Relationship added related to 0028306
2015-06-21 10:11 Cyrax Note Added: 0084604
2015-06-21 10:37 Cyrax Note Edited: 0084604 View Revisions
2015-06-21 12:28 Martin Friebe Assigned To Martin Friebe => Joost van der Sluis
2015-06-22 06:14 Cyrax Note Edited: 0084604 View Revisions
2015-06-22 06:14 Cyrax File Added: lazarus-log.txt
2015-06-22 06:16 Cyrax Note Edited: 0084604 View Revisions
2015-06-22 06:16 Cyrax Note Edited: 0084604 View Revisions
2015-06-22 08:02 Cyrax File Added: gdbmidebugger.pp.patch
2015-06-22 08:03 Cyrax Note Added: 0084630
2015-06-30 16:51 Martin Friebe Assigned To Joost van der Sluis => Martin Friebe
2015-06-30 17:41 Martin Friebe Fixed in Revision => 49476
2015-06-30 17:41 Martin Friebe LazTarget => 1.6
2015-06-30 17:41 Martin Friebe Note Added: 0084786
2015-06-30 17:41 Martin Friebe Status assigned => resolved
2015-06-30 17:41 Martin Friebe Fixed in Version => 1.5 (SVN)
2015-06-30 17:41 Martin Friebe Resolution open => fixed
2015-06-30 17:41 Martin Friebe Target Version => 1.6
2015-10-27 17:51 Cyrax Note Added: 0086914
2015-10-27 17:51 Cyrax Status resolved => closed