View Issue Details

IDProjectCategoryView StatusLast Update
0025244LazarusIDEpublic2014-01-25 15:06
ReporterCyraxAssigned ToMartin Friebe 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product VersionProduct Build 
Target Version1.2.0Fixed in Version1.3 (SVN) 
Summary0025244: Exception Range Check Error raised inside SynEditMarkupIfDef.pas when scrolling editor.
DescriptionSee summary field, "Steps To Reproduce" and "Additional Information" for more info.

This happens only if {$ENDIF (or other conditional/compiler directive) does not have closing curly bracket.
Steps To Reproduce1. Open attached project in IDE.
2. Open project1.lpr in text editor.
3. Scroll text area with mouse scroll wheel or text cursor control keys.
Additional InformationTarget system: win32, Free Pascal trunk 2.7.1-r25835, Lazarus trunk '1.3'-r43331

fpc make options all install sourceinstall UPXPROG=echo OPT="-gw2 -godwarfsets
-gl -O- -OoNO -Xs-" COMPILER_OPTIONS="-gw2 -godwarfsets -gl -O- -OoNO -Xs-" INST
ALL_PREFIX=i:\free_pascal_and_lazarus\free_pascal_and_lazarus\fpc\trunk\build\tr
unk_x32 REVSTR=25835 IDE=1
lazarus make options make all UPXPROG=echo OPT="-gw2 -godwarfsets -gh -gl -O- -
OoNO -dHEAPTRC_WINDOW -Xs-" USESVN2REVISIONINC=0

---
Call stack:

#0 fpc_raiseexception(0xc9, 0xb22cc2, 0xd01f3b4) at ..\inc\except.inc:218
0000001 RUNERRORTOEXCEPT(201, 0xb22cc2, 0xd01f3b4) at ..\objpas\sysutils\sysutils.inc:415
0000002 HANDLEERRORADDRFRAME(201, 0xb22cc2, 0xd01f3b4) at ..\inc\system.inc:1062
0000003 HANDLEERRORADDRFRAMEIND(201, 0xb22cc2, 0xd01f3b4) at ..\inc\system.inc:1079
0000004 fpc_dynarray_rangecheck(0xffc88e0, 1) at ..\inc\dynarr.inc:41
0000005 GETENTRY(0xff9eb88, 1) at syneditmarkupifdef.pp:1318
0000006 GETENTRY({FATBOL = false, FATEOL = false, FNODE = 0xff9eb88, FTREE = 0x108f5718, FSTARTLINE = 8, INDEX = 3, FCACHENESTMINIMUM = -1, FCACHENESTSTART = -1, FCACHENESTEND = -1, STARTLINE = 8, ATBOL = false, ATEOL = false, NODE = 0xff9eb88}, 1) at syneditmarkupifdef.pp:1495
0000007 GETORINSERTNODEATLINE(0x108f5718, 21) at syneditmarkupifdef.pp:1832
0000008 VALIDATERANGE(0x108f5718, 22, 56, 0x108f57a8) at syneditmarkupifdef.pp:2815
0000009 DOTREEUNLOCKING(0x107af190, 0x108f5718) at syneditmarkupifdef.pp:3188
0000010 CALLNOTIFYEVENTS(0x10406e40, 0x108f5718) at lazmethodlist.pas:163
0000011 UNLOCKTREE(0x108f5718) at syneditmarkupifdef.pp:3122
0000012 DECPAINTLOCK(0x107af190) at syneditmarkupifdef.pp:3954
0000013 DECPAINTLOCK(0x108d72a8) at syneditmarkup.pp:510
0000014 DODECPAINTLOCK(0x11123760, 0x11123760) at synedit.pp:2278
0000015 CALLNOTIFYEVENTS(0x10017f90, 0x11123760) at lazmethodlist.pas:163
0000016 SENDNOTIFICATION(0x2fabd8, SENRDECPAINTLOCK, 0x11123760) at synedittextbuffer.pp:1447
0000017 SETUPDATESTATE(0x2fabd8, false, 0x11123760) at synedittextbuffer.pp:1216
0000018 ENDUPDATE(0x2fabd8, 0x11123760) at lazsynedittext.pas:962
0000019 DECPAINTLOCK(0x11123760) at synedit.pp:2167
0000020 WMMOUSEWHEEL(0x11123760, {MSG = 522, BUTTON = 0, WHEELDELTA = -120, X = 186, Y = 178, RESULT = 0, USERDATA = 0x0, STATE = []}) at synedit.pp:7155
0000021 DISPATCH(0x11123760, 0) at ..\inc\objpas.inc:602
0000022 WNDPROC(0x11123760, {MSG = 522, WPARAM = -7864320, LPARAM = 11665594, RESULT = 0, WPARAMLO = 0, WPARAMHI = 65416, WPARAMFILLER = {}, LPARAMLO = 186, LPARAMHI = 178, LPARAMFILLER = {}, RESULTLO = 0, RESULTHI = 0, RESULTFILLER = {}}) at include\control.inc:2099
0000023 WNDPROC(0x11123760, {MSG = 522, WPARAM = -7864320, LPARAM = 11665594, RESULT = 0, WPARAMLO = 0, WPARAMHI = 65416, WPARAMFILLER = {}, LPARAMLO = 186, LPARAMHI = 178, LPARAMFILLER = {}, RESULTLO = 0, RESULTHI = 0, RESULTFILLER = {}}) at include\wincontrol.inc:5327
0000024 WNDPROC(0x11123760, {MSG = 522, WPARAM = -7864320, LPARAM = 11665594, RESULT = 0, WPARAMLO = 0, WPARAMHI = 65416, WPARAMFILLER = {}, LPARAMLO = 186, LPARAMHI = 178, LPARAMFILLER = {}, RESULTLO = 0, RESULTHI = 0, RESULTFILLER = {}}) at synedit.pp:5721
0000025 DELIVERMESSAGE(0x11123760, 0) at lclmessageglue.pas:112
0000026 WINDOWPROC(198950, 522, -7864320, 22938119) at win32\win32callback.inc:2497
0000027 gapfnScSendMessage at :0
0000028 ?? at :0
0000029 USER32!GetThreadDesktop at :0
0000030 WIN32INT_$$_DISPOSECOMBOEDITWINDOWINFO$TCUSTOMCOMBOBOX at :0
0000031 USER32!CharPrevW at :0
0000032 USER32!DispatchMessageW at :0
0000033 APPPROCESSMESSAGES(0xd2417c0) at win32\win32object.inc:367
0000034 HANDLEMESSAGE(0xd1e97e8) at include\application.inc:1268
0000035 RUNLOOP(0xd1e97e8) at include\application.inc:1401
0000036 APPRUN(0xd2417c0, {Proc = {procedure (POINTER)} 0xd01feb0, Self = 0xd1e97e8}) at include\interfacebase.inc:54
0000037 RUN(0xd1e97e8) at include\application.inc:1389
0000038 main at lazarus.pp:128
TagsNo tags attached.
Fixed in Revision43332
LazTarget1.2
Widgetset
Attached Files

Activities

Cyrax

2013-10-27 20:42

reporter  

test_project.zip (2,181 bytes)

Martin Friebe

2013-10-27 22:41

manager   ~0071003

One note. Not related to the crash (but it can affect display of ifdef too)


{$IFNDEF TEST_DELPHI}
{$mode objfpc}
{$ELSE}
{$mode delphi}
{$ENDIF}

The HL does parse both $mode, because the HL does not use the IFDEF state.

That means that it (should (there is actually another bug, that makes it unpredictable/random) see the mode delphi last. And nested comments, or nested {} in directives will (should) be off.

So the {$H+} is part and end of the ENDIF.

Martin Friebe

2013-10-28 01:42

manager   ~0071006

Please test and close if ok

Issue History

Date Modified Username Field Change
2013-10-27 20:42 Cyrax New Issue
2013-10-27 20:42 Cyrax File Added: test_project.zip
2013-10-27 20:52 Martin Friebe Assigned To => Martin Friebe
2013-10-27 20:52 Martin Friebe Status new => assigned
2013-10-27 22:41 Martin Friebe Note Added: 0071003
2013-10-28 01:42 Martin Friebe Fixed in Revision => 43332
2013-10-28 01:42 Martin Friebe LazTarget => 1.2
2013-10-28 01:42 Martin Friebe Widgetset Win32/Win64 =>
2013-10-28 01:42 Martin Friebe Note Added: 0071006
2013-10-28 01:42 Martin Friebe Status assigned => resolved
2013-10-28 01:42 Martin Friebe Fixed in Version => 1.3 (SVN)
2013-10-28 01:42 Martin Friebe Resolution open => fixed
2013-10-28 01:42 Martin Friebe Target Version => 1.2.0
2014-01-25 15:06 Cyrax Status resolved => closed