Debugger causes "cannot focus a disabled control"
Original Reporter info from Mantis: Martin @martin_frb
-
Reporter name: Martin Friebe
Original Reporter info from Mantis: Martin @martin_frb
- Reporter name: Martin Friebe
Description:
Step into a procedure, that is in another, not yet loaded unit (preferable reasonable big unit, so it takes time to load debugger-line-info (blue dots))
press F8, before the unit is fully loaded
=> cannot focus a disabled control
The F8 probably must step out of the new file
---
What can not be seen in the Stack-trace, but what I guess is the cause of the issue:
the first F7 (step into) is a key-press that goes to synedit
synedit.keydown => goes via SourcEditor and main => to Debugger Step into => Calls Main DOOPENEDITORFILE -- Creates a new Notebook Tab (and sets PageIndex to the new tab) -- TSourceNotebook.NewFile : line 6123: Result.CodeBuffer:=ASource; while loading the source, the line-info is needed (FillEdxecutionMarks) => During this the debugger does Application ProcessMessages ===> not the 2nd keypress F8 is handled ----(while SourceEditor is still in the process of opening a file) ----The tab is changed to another editor &LtPos;=== -- The original TSourceNotebook.NewFile continues -- It tries to set the Focus to the new editor
Well and that fails, because the Editor is no longer on the visible tab
Additional information:
#0 fpc_raiseexception(0xf2f9e4, 0xd71c218, 0x921e560) at ..\inc\except.inc:191
#1 SETACTIVECONTROL(0xb52fd00, 0xccc34b0) at include\customform.inc:1639
#2 FOCUSCONTROL(0xb52fd00, 0xccc34b0) at include\customform.inc:132
#3 SETFOCUS(0xccc34b0) at include\wincontrol.inc:5379
#4 FOCUSEDITOR(0xd221620) at sourceeditor.pp:2402
#5 FOCUSEDITOR(0xb52fd00) at sourceeditor.pp:6204
#6 DOOPENFILEINSOURCEEDITOR(0x1dbf60, 0xb026128, -1, -1, [OFONLYIFEXISTS, OFREGULARFILE]) at main.pp:7725
#7 DOOPENEDITORFILE(0x1dbf60, 0xd48fff8 'C:\FPC\SVN\trunc\rtl\inc\heap.inc', -1, -1, 0x0, [OFONLYIFEXISTS, OFREGULARFILE]) at main.pp:8610
#8 DOOPENEDITORFILE(0x1dbf60, 0xd48fff8 'C:\FPC\SVN\trunc\rtl\inc\heap.inc', -1, -1, [OFONLYIFEXISTS, OFREGULARFILE]) at main.pp:8335
#9 DOJUMPTOCODEPOS(0x1dbf60, 0xd2212e0, 0x0, 0xd31f678, 1, 237, -1, true, true, false) at main.pp:13663
#10 DEBUGGERCURRENTLINE(0xa2b1ca8, 0xb6e0aa0, @0x921e958: {ADDRESS = 4295098, FUNCNAME = 0xd621100 'GETMEM', SRCFILE = 0xd621280 '..\inc\heap.inc', SRCFULLNAME = 0xd4038c0 'C:\FPC\SVN\trunc\rtl\win32\..\inc\heap.inc', SRCLINE = 237}) at debugmanager.pas:1655
#11 DOCURRENT(0xb6e0aa0, @0x921e958: {ADDRESS = 4295098, FUNCNAME = 0xd621100 'GETMEM', SRCFILE = 0xd621280 '..\inc\heap.inc', SRCFULLNAME = 0xd4038c0 'C:\FPC\SVN\trunc\rtl\win32\..\inc\heap.inc', SRCLINE = 237}) at ..\debugger\debugger.pp:1638
#12 PROCESSFRAME(0xb6e0aa0, 0xd24a9c8 '{addr="0x004189ba",func="GETMEM",args=[{name="P",value="@0x921f9e0"},{name="SIZE",value="56"}],file="../inc/heap.inc",fullname="C:/FPC/SVN/trunc/rtl/win32/../inc/heap.inc",line="237"}') at ..\debugger\gdbmidebugger.pp:3480
#13 PROCESSSTOPPED(0xb6e0aa0, 0xb751a38 ',reason="end-stepping-range",frame={addr="0x004189ba",func="GETMEM",args=[{name="P",value="@0x921f9e0"},{name="SIZE",value="56"}],file="../inc/heap.inc",fullname="C:/FPC/SVN/trunc/rtl/win32/../inc/hea'..., false) at ..\debugger\gdbmidebugger.pp:3914
#14 EXECUTECOMMANDFULL(0xb6e0aa0, 0x106b828 '-symbol-list-lines %s', @0x921eba0: 0x921eba0, 0, [CFIGNOREERROR], @0x921eba8: {Proc = {procedure (POINTER, TGDBMIEXECRESULT, LONGINT)} 0x921eba8, Self = 0xb1a57a8}, 220454968, @0x921eb60: {STATE = DSERROR, VALUES = 0xd6257e8 ',msg="mi_cmd_symbol_list_lines: Unknown source file name."', FLAGS = []}) at ..\debugger\gdbmidebugger.pp:1378
#15 EXECUTECOMMAND(0xb6e0aa0, 0x106b828 '-symbol-list-lines %s', @0x921eba0: 0x921eba0, 0, [CFIGNOREERROR], @0x921eba8: {Proc = {procedure (POINTER, TGDBMIEXECRESULT, LONGINT)} 0x921eba8, Self = 0xb1a57a8}, 220454968) at ..\debugger\gdbmidebugger.pp:1305
#16 REQUEST(0xb1a57a8, 0xd48fff8 'C:\FPC\SVN\trunc\rtl\inc\heap.inc') at ..\debugger\gdbmidebugger.pp:764
#17 REQUEST(0xb423d68, 0xd48fff8 'C:\FPC\SVN\trunc\rtl\inc\heap.inc') at debugmanager.pas:472
#18 FILLEXECUTIONMARKS(0xd2212e0) at sourceeditor.pp:4326
#19 SETCODEBUFFER(0xd2212e0, 0xd31f678) at sourceeditor.pp:3595
#20 NEWFILE(0xb52fd00, 0xd605280 'heap.inc', 0xd31f678, false, 0x0) at sourceeditor.pp:6123
#21 DOOPENFILEINSOURCEEDITOR(0x1dbf60, 0xb026128, -1, -1, [OFONLYIFEXISTS, OFREGULARFILE]) at main.pp:7665
#22 DOOPENEDITORFILE(0x1dbf60, 0xd48fff8 'C:\FPC\SVN\trunc\rtl\inc\heap.inc', -1, -1, 0x0, [OFONLYIFEXISTS, OFREGULARFILE]) at main.pp:8610
#23 DOOPENEDITORFILE(0x1dbf60, 0xd48fff8 'C:\FPC\SVN\trunc\rtl\inc\heap.inc', -1, -1, [OFONLYIFEXISTS, OFREGULARFILE]) at main.pp:8335
#24 DOJUMPTOCODEPOS(0x1dbf60, 0xd2224c0, 0xb610200, 0xd31f678, 1, 236, -1, true, true, false) at main.pp:13663
#25 DEBUGGERCURRENTLINE(0xa2b1ca8, 0xb6e0aa0, @0x921f0d0: {ADDRESS = 4295088, FUNCNAME = 0xd468960 'GETMEM', SRCFILE = 0xd604e60 '..\inc\heap.inc', SRCFULLNAME = 0xd4026c0 'C:\FPC\SVN\trunc\rtl\win32\..\inc\heap.inc', SRCLINE = 236}) at debugmanager.pas:1655
#26 DOCURRENT(0xb6e0aa0, @0x921f0d0: {ADDRESS = 4295088, FUNCNAME = 0xd468960 'GETMEM', SRCFILE = 0xd604e60 '..\inc\heap.inc', SRCFULLNAME = 0xd4026c0 'C:\FPC\SVN\trunc\rtl\win32\..\inc\heap.inc', SRCLINE = 236}) at ..\debugger\debugger.pp:1638
#27 PROCESSFRAME(0xb6e0aa0, 0xd24a478 '{addr="0x004189b0",func="GETMEM",args=[{name="P",value="@0x1063260"},{name="SIZE",value="153221600"}],file="../inc/heap.inc",fullname="C:/FPC/SVN/trunc/rtl/win32/../inc/heap.inc",line="236"}') at ..\debugger\gdbmidebugger.pp:3480
#28 PROCESSSTOPPED(0xb6e0aa0, 0xb751778 ',reason="end-stepping-range",frame={addr="0x004189b0",func="GETMEM",args=[{name="P",value="@0x1063260"},{name="SIZE",value="153221600"}],file="../inc/heap.inc",fullname="C:/FPC/SVN/trunc/rtl/win32/../'..., false) at ..\debugger\gdbmidebugger.pp:3914
#29 EXECUTECOMMANDFULL(0xb6e0aa0, 0x106c544 '-exec-step', @0x921f2b0: 0x921f2b0, -1, [CFEXTERNAL], @0x921f2b8: {Proc = {procedure (POINTER, TGDBMIEXECRESULT, LONGINT)} 0x921f2b8, Self = 0x0}, 0, @0x921f2e8: {STATE = DSNONE, VALUES = 0x0, FLAGS = []}) at ..\debugger\gdbmidebugger.pp:1378
#30 EXECUTECOMMAND(0xb6e0aa0, 0x106c544 '-exec-step', [CFEXTERNAL]) at ..\debugger\gdbmidebugger.pp:1274
#31 GDBSTEPINTO(0xb6e0aa0) at ..\debugger\gdbmidebugger.pp:2925
#32 REQUESTCOMMAND(0xb6e0aa0, DCSTEPINTO, @0x921f5a8: 0x921f5a8, -1) at ..\debugger\gdbmidebugger.pp:3939
#33 REQCMD(0xb6e0aa0, DCSTEPINTO, @0x921f5a8: 0x921f5a8, -1) at ..\debugger\debugger.pp:1800
#34 STEPINTO(0xb6e0aa0) at ..\debugger\debugger.pp:1896
#35 DOSTEPINTOPROJECT(0xa2b1ca8) at debugmanager.pas:2348
#36 PROCESSCOMMAND(0xa2b1ca8, 1407, @0x921f6cc: true) at debugmanager.pas:2406
#37 ONPROCESSIDECOMMAND(0x1dbf60, 0xb52fd00, 1407, @0x921f6cc: true) at main.pp:3105
#38 PROCESSPARENTCOMMAND(0xb52fd00, 0xd2224c0, @0x921f760: 1407, @0x921f74c: '', 0x0, @0x921f6cc: true) at sourceeditor.pp:6507
#39 PROCESSUSERCOMMAND(0xd2224c0, 0xde77b80, @0x921f760: 1407, @0x921f74c: '', 0x0) at sourceeditor.pp:2723
#40 DOONPROCESSCOMMAND(0xde77b80, @0x921f760: 1407, @0x921f74c: '', 0x0) at synedit.pp:6304
#41 COMMANDPROCESSOR(0xde77b80, 1407, '', 0x0) at synedit.pp:5672
#42 KEYDOWN(0xde77b80, @0x921fbe4: 0, []) at synedit.pp:2239
#43 KEYDOWNBEFOREINTERFACE(0xde77b80, @0x921fbe4: 0, []) at include\wincontrol.inc:5398
#44 DOKEYDOWNBEFOREINTERFACE(0xde77b80, @0x921fbe0: {MSG = 48384, CHARCODE = 0, UNUSED = 21845, KEYDATA = 4259841, RESULT = 0}) at include\wincontrol.inc:5535
#45 CNKEYDOWN(0xde77b80, @0x921fbe0: {MSG = 48384, CHARCODE = 0, UNUSED = 21845, KEYDATA = 4259841, RESULT = 0}) at include\wincontrol.inc:6787
--------------------------------------------------
Stacktrace 2:
#0 WAITFORHANDLES(@0x921e988: 0x921e988, 0) at ..\debugger\cmdlinedebugger.pp:165
#1 READLINE(0xb620b90, false) at ..\debugger\cmdlinedebugger.pp:340
#2 READLINE(0xb620b90) at ..\debugger\cmdlinedebugger.pp:275
#3 PROCESSRESULT(0xb620b90, @0x921eae8: {STATE = DSNONE, VALUES = 0x0, FLAGS = []}) at ..\debugger\gdbmidebugger.pp:3577
#4 EXECUTECOMMANDFULL(0xb620b90, 0x106b828 '-symbol-list-lines %s', @0x921eba0: 0x921eba0, 0, [CFIGNOREERROR], @0x921eba8: {Proc = {procedure (POINTER, TGDBMIEXECRESULT, LONGINT)} 0x921eba8, Self = 0xb0d32e8}, 221239104, @0x921eb60: {STATE = DSNONE, VALUES = 0x0, FLAGS = []}) at ..\debugger\gdbmidebugger.pp:1356
#5 EXECUTECOMMAND(0xb620b90, 0x106b828 '-symbol-list-lines %s', @0x921eba0: 0x921eba0, 0, [CFIGNOREERROR], @0x921eba8: {Proc = {procedure (POINTER, TGDBMIEXECRESULT, LONGINT)} 0x921eba8, Self = 0xb0d32e8}, 221239104) at ..\debugger\gdbmidebugger.pp:1305
#6 REQUEST(0xb0d32e8, 0xd287720 'C:\FPC\SVN\trunc\rtl\inc\objpas.inc') at ..\debugger\gdbmidebugger.pp:764
#7 REQUEST(0xb3142a8, 0xd287720 'C:\FPC\SVN\trunc\rtl\inc\objpas.inc') at debugmanager.pas:472
#8 FILLEXECUTIONMARKS(0xd202be8) at sourceeditor.pp:4326
#9 SETCODEBUFFER(0xd202be8, 0xd692b90) at sourceeditor.pp:3595
#10 NEWFILE(0xb41b130, 0xe4ab1a0 'objpas.inc', 0xd692b90, false, 0x0) at sourceeditor.pp:6123
#11 DOOPENFILEINSOURCEEDITOR(0x2ebf60, 0xaf16228, -1, -1, [OFONLYIFEXISTS, OFREGULARFILE]) at main.pp:7665
#12 DOOPENEDITORFILE(0x2ebf60, 0xd287720 'C:\FPC\SVN\trunc\rtl\inc\objpas.inc', -1, -1, 0x0, [OFONLYIFEXISTS, OFREGULARFILE]) at main.pp:8610
#13 DOOPENEDITORFILE(0x2ebf60, 0xd287720 'C:\FPC\SVN\trunc\rtl\inc\objpas.inc', -1, -1, [OFONLYIFEXISTS, OFREGULARFILE]) at main.pp:8335
#14 DOJUMPTOCODEPOS(0x2ebf60, 0xb0f79a8, 0xb502d18, 0xd692b90, 1, 266, -1, true, true, false) at main.pp:13663
#15 DEBUGGERCURRENTLINE(0xa6e1ca8, 0xb620b90, @0x921f0d0: {ADDRESS = 4274496, FUNCNAME = 0xe4aa300 'CREATE', SRCFILE = 0xe4b3268 '..\inc\objpas.inc', SRCFULLNAME = 0xb2bc928 'C:\FPC\SVN\trunc\rtl\win32\..\inc\objpas.inc', SRCLINE = 266}) at debugmanager.pas:1655
#16 DOCURRENT(0xb620b90, @0x921f0d0: {ADDRESS = 4274496, FUNCNAME = 0xe4aa300 'CREATE', SRCFILE = 0xe4b3268 '..\inc\objpas.inc', SRCFULLNAME = 0xb2bc928 'C:\FPC\SVN\trunc\rtl\win32\..\inc\objpas.inc', SRCLINE = 266}) at ..\debugger\debugger.pp:1638
#17 PROCESSFRAME(0xb620b90, 0xd2992c8 '{addr="0x00413940",func="CREATE",args=[{name="this",value="0x0"},{name="vmt",value="0x10632f4"}],file="../inc/objpas.inc",fullname="C:/FPC/SVN/trunc/rtl/win32/../inc/objpas.inc",line="266"}') at ..\debugger\gdbmidebugger.pp:3480
#18 PROCESSSTOPPED(0xb620b90, 0xb689b10 ',reason="end-stepping-range",frame={addr="0x00413940",func="CREATE",args=[{name="this",value="0x0"},{name="vmt",value="0x10632f4"}],file="../inc/objpas.inc",fullname="C:/FPC/SVN/trunc/rtl/win32/../inc'..., false) at ..\debugger\gdbmidebugger.pp:3914
#19 EXECUTECOMMANDFULL(0xb620b90, 0x106c544 '-exec-step', @0x921f2b0: 0x921f2b0, -1, [CFEXTERNAL], @0x921f2b8: {Proc = {procedure (POINTER, TGDBMIEXECRESULT, LONGINT)} 0x921f2b8, Self = 0x0}, 0, @0x921f2e8: {STATE = DSNONE, VALUES = 0x0, FLAGS = []}) at ..\debugger\gdbmidebugger.pp:1378
#20 EXECUTECOMMAND(0xb620b90, 0x106c544 '-exec-step', [CFEXTERNAL]) at ..\debugger\gdbmidebugger.pp:1274
#21 GDBSTEPINTO(0xb620b90) at ..\debugger\gdbmidebugger.pp:2925
#22 REQUESTCOMMAND(0xb620b90, DCSTEPINTO, @0x921f5a8: 0x921f5a8, -1) at ..\debugger\gdbmidebugger.pp:3939
#23 REQCMD(0xb620b90, DCSTEPINTO, @0x921f5a8: 0x921f5a8, -1) at ..\debugger\debugger.pp:1800
#24 STEPINTO(0xb620b90) at ..\debugger\debugger.pp:1896
#25 DOSTEPINTOPROJECT(0xa6e1ca8) at debugmanager.pas:2348
#26 PROCESSCOMMAND(0xa6e1ca8, 1407, @0x921f6cc: true) at debugmanager.pas:2406
#27 ONPROCESSIDECOMMAND(0x2ebf60, 0xb41b130, 1407, @0x921f6cc: true) at main.pp:3105
#28 PROCESSPARENTCOMMAND(0xb41b130, 0xb0f79a8, @0x921f760: 1407, @0x921f74c: '', 0x0, @0x921f6cc: true) at sourceeditor.pp:6507
#29 PROCESSUSERCOMMAND(0xb0f79a8, 0xb3ff6e0, @0x921f760: 1407, @0x921f74c: '', 0x0) at sourceeditor.pp:2723
#30 DOONPROCESSCOMMAND(0xb3ff6e0, @0x921f760: 1407, @0x921f74c: '', 0x0) at synedit.pp:6304
#31 COMMANDPROCESSOR(0xb3ff6e0, 1407, '', 0x0) at synedit.pp:5672
#32 KEYDOWN(0xb3ff6e0, @0x921fbe4: 0, []) at synedit.pp:2239
Mantis conversion info:
- Mantis ID: 16233
- Version: 0.9.29 (SVN)
- Fixed in version: 0.9.29 (SVN)
- Fixed in revision: 28163 (#aac97933)
- Target version: 0.9.30
- LazTarget: 1.0