crash in TXMLConfig.SetDeleteValue
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:
To reproduce
- debug the IDE
- In the debugged IDE, open any project (must save to disk, with session)
Must probably save in the NEW xml format with "[1]" index in the path
- Add a watch, with some expression (eg Foo)
- Add a watch, with an empty expression
While that is an invalid watch, the calls to XmlConf will be valid
- Save the project
An access violation should occur.
procedure TCurrentWatch.SaveToXMLConfig(const AConfig: TXMLConfig; const APath: string);
begin
AConfig.SetDeleteValue(APath + 'Expression/Value', Expression, '');
calls xmlconfig with a Path for the watch: "Debugging/Watches/Item[2]/Expression/Value"
Both the value (var Expression) and the default value are empty string.
This leads to
DeleteValue('Debugging/Watches/Item[2]/Expression/Value')
being called.
In
procedure TXMLConfig.TNodeCache.RefreshChildren;
aChild:=Node.FirstChild;
the object/self contains
NODE: TDOMNODE($5555555555555555)
NODESEARCHNAME: $00000000434632F8^: 'Item[2]'
CHILDRENVALID: False
CHILDREN: (TDOMNODE($0000000043340E88))
NODELISTNAME: nil
NODELIST: nil
#0 REFRESHCHILDREN(TNODECACHE($000000003E1D6710)) at B:\lazarus_latest_svn_2\components\lazutils\laz2_xmlcfg.pas:210
#1 REFRESHCHILDRENIFNEEDED(TNODECACHE($000000003E1D6710)) at B:\lazarus_latest_svn_2\components\lazutils\laz2_xmlcfg.pas:234
#2 FINDCHILDNODE(TXMLCONFIG($0000000042B80B50), 3, $00000000434636B8^: 'Expression', False) at B:\lazarus_latest_svn_2\components\lazutils\laz2_xmlcfg.pas:785
#3 INTERNALFINDNODE(TXMLCONFIG($0000000042B80B50), $0000000043408FC8^: 'Debugging/Watches/Item[2]/Expression/Value', 36, False) at B:\lazarus_latest_svn_2\components\lazutils\laz2_xmlcfg.pas:732
#4 FINDNODE(TXMLCONFIG($0000000042B80B50), $0000000043408FC8^: 'Debugging/Watches/Item[2]/Expression/Value', True) at B:\lazarus_latest_svn_2\components\lazutils\laz2_xmlcfg.pas:600
#5 DELETEVALUE(TXMLCONFIG($0000000042B80B50), $0000000043408FC8^: 'Debugging/Watches/Item[2]/Expression/Value') at B:\lazarus_latest_svn_2\components\lazutils\laz2_xmlcfg.pas:572
#6 SETDELETEVALUE(TXMLCONFIG($0000000042B80B50), $0000000043408FC8^: 'Debugging/Watches/Item[2]/Expression/Value', nil, nil) at B:\lazarus_latest_svn_2\components\lazutils\laz2_xmlcfg.pas:492
#7 SAVETOXMLCONFIG(TCURRENTWATCH($00000000429AC350), TXMLCONFIG($0000000042B80B50), $0000000043408EE8^: 'Debugging/Watches/Item[2]/') at B:\lazarus_latest_svn_2\debugger\debugger.pp:5555
#8 SAVETOXMLCONFIG(TCURRENTWATCHES($0000000022FC3020), TXMLCONFIG($0000000042B80B50), $0000000101310CB0^: 'Debugging/Watches/', False) at B:\lazarus_latest_svn_2\debugger\debugger.pp:5744
#9 SAVETOXMLCONFIG(TIDEWATCHESMONITOR($0000000022FC2F40), TXMLCONFIG($0000000042B80B50), $0000000101310CB0^: 'Debugging/Watches/', False) at B:\lazarus_latest_svn_2\debugger\debugger.pp:3603
#10 SAVEPROJECTSPECIFICINFO(TDEBUGMANAGER($00000000262AC5F0), TXMLCONFIG($0000000042B80B50), [PWFSKIPPROJECTINFO]) at B:\lazarus_latest_svn_2\ide\debugmanager.pas:2205
#11 ONSAVEPROJECTINFOTOXMLCONFIG(TMAINIDE($000000000750F830), TPROJECT($000000003A619BF0), TXMLCONFIG($0000000042B80B50), [PWFSKIPPROJECTINFO]) at B:\lazarus_latest_svn_2\ide\main.pp:5745
#12 SAVETOSESSION(TPROJECT($000000003A619BF0)) at B:\lazarus_latest_svn_2\ide\project.pp:3363
#13 DOWRITE(TPROJECT($000000003A619BF0), $00000000430CF3D8^: 'B:\laz_configs\lazarus_latest_tmp\projectsessions\SynTest.lps', False) at B:\lazarus_latest_svn_2\ide\project.pp:3393
#14 WRITEPROJECT(TPROJECT($000000003A619BF0), [], nil, TBUILDMATRIXOPTIONS($000000000634EB90)) at B:\lazarus_latest_svn_2\ide\project.pp:3493
#15 SAVEPROJECTINFO([SFCHECKAMBIGUOUSFILES]) at B:\lazarus_latest_svn_2\ide\sourcefilemanager.pas:7517
#16 SAVEPROJECT([SFCHECKAMBIGUOUSFILES]) at B:\lazarus_latest_svn_2\ide\sourcefilemanager.pas:3992
#17 DOSAVEPROJECT(TMAINIDE($000000000750F830), [SFCHECKAMBIGUOUSFILES]) at B:\lazarus_latest_svn_2\ide\main.pp:6416
#18 DOSAVEALL(TMAINIDE($000000000750F830), [SFCHECKAMBIGUOUSFILES]) at B:\lazarus_latest_svn_2\ide\main.pp:5800
#19 DOSAVEFORBUILD(TMAINIDE($000000000750F830), CRCOMPILE) at B:\lazarus_latest_svn_2\ide\main.pp:6697
#20 DOBUILDPROJECT(TMAINIDE($000000000750F830), CRCOMPILE, [], True) at B:\lazarus_latest_svn_2\ide\main.pp:6858
#21 DOCOMPILE(TMAINIDE($000000000750F830)) at B:\lazarus_latest_svn_2\ide\main.pp:7229
#22 MNUCOMPILEPROJECTCLICKED(TMAINIDE($000000000750F830), TOBJECT($000000000E8FA030)) at B:\lazarus_latest_svn_2\ide\main.pp:4557
#23 EXECUTE(TIDECOMMAND($000000000E8FA030), TOBJECT($000000000E8FA030)) at B:\lazarus_latest_svn_2\components\ideintf\idecommands.pas:1523
#24 PROCESSIDECOMMAND(TMAINIDE($000000000750F830), TOBJECT($000000003EDC4B30), 1401, False) at B:\lazarus_latest_svn_2\ide\main.pp:3662
#25 PROCESSPARENTCOMMAND(TSOURCENOTEBOOK($000000003EDC4B30), TOBJECT($000000003EE424C0), 1401, #$00, POINTER(nil), False) at B:\lazarus_latest_svn_2\ide\sourceeditor.pp:8901
#26 PROCESSUSERCOMMAND(TSOURCEEDITOR($000000003EE424C0), TOBJECT($000000003EEBF7A0), 1401, #$00, POINTER(nil)) at B:\lazarus_latest_svn_2\ide\sourceeditor.pp:4195
#27 DOONPROCESSCOMMAND(TCUSTOMSYNEDIT($000000003EEBF7A0), 1401, #$00, POINTER(nil)) at B:\lazarus_latest_svn_2\components\synedit\synedit.pp:7623
#28 COMMANDPROCESSOR(TCUSTOMSYNEDIT($000000003EEBF7A0), 1401, #$00, POINTER(nil), []) at B:\lazarus_latest_svn_2\components\synedit\synedit.pp:6833
#29 KEYDOWN(TCUSTOMSYNEDIT($000000003EEBF7A0), 0, [SSCTRL]) at B:\lazarus_latest_svn_2\components\synedit\synedit.pp:3221
#30 KEYDOWNBEFOREINTERFACE(TWINCONTROL($000000003EEBF7A0), 0, [SSCTRL]) at B:\lazarus_latest_svn_2\lcl\include\wincontrol.inc:5702
#31 DOKEYDOWNBEFOREINTERFACE(TWINCONTROL($000000003EEBF7A0), TLMKEY($00000000013FF838), False) at B:\lazarus_latest_svn_2\lcl\include\wincontrol.inc:5833
#32 CNKEYDOWN(TWINCONTROL($000000003EEBF7A0), TLMKEY($00000000013FF838)) at B:\lazarus_latest_svn_2\lcl\include\wincontrol.inc:7227
#33 SYSTEM$_$TOBJECT_$__$$_DISPATCH$formal+181 at :0
#34 WNDPROC(TWINCONTROL($000000003EEBF7A0), TMESSAGE($00000000013FF838)) at B:\lazarus_latest_svn_2\lcl\include\wincontrol.inc:5429
#35 WNDPROC(TCUSTOMSYNEDIT($000000003EEBF7A0), TMESSAGE($00000000013FF838)) at B:\lazarus_latest_svn_2\components\synedit\synedit.pp:6393
#36 DELIVERMESSAGE(TOBJECT($000000003EEBF7A0), 0) at B:\lazarus_latest_svn_2\lcl\lclmessageglue.pas:112
#37 DOWINDOWPROC(TWINDOWPROCHELPER($00000000013FF768)) at B:\lazarus_latest_svn_2\lcl\interfaces\win32\win32callback.inc:2606
#38 WINDOWPROC(266002, 256, 120, 4390913) at B:\lazarus_latest_svn_2\lcl\interfaces\win32\win32callback.inc:2771
#39 user32:CallWindowProcW+957 at :0
#40 HANDLEMESSAGE(TAPPLICATION($00000000000F8F50)) at B:\lazarus_latest_svn_2\lcl\include\application.inc:1208
#41 RUNLOOP(TAPPLICATION($00000000000F8F50)) at B:\lazarus_latest_svn_2\lcl\include\application.inc:1327
#42 APPRUN(TWIDGETSET($00000000000F9430), TAPPLICATIONMAINLOOP($00000000013FFE18)) at B:\lazarus_latest_svn_2\lcl\include\interfacebase.inc:54
#43 RUN(TAPPLICATION($00000000000F8F50)) at B:\lazarus_latest_svn_2\lcl\include\application.inc:1315
#44 main at B:\lazarus_latest_svn_2\ide\lazarus.pp:154
#45 SYSTEM_$$_MAIN_WRAPPER$POINTER$POINTER$$INT64+6 at :0
Mantis conversion info:
- Mantis ID: 37417
- OS: win 10
- OS Build: 10
- Build: 63647
- Platform: 64bit Intel
- Version: 2.1 (SVN)
- Monitored by: » @JuhaManninen (Juha Manninen)