On 24 Feb 2005 at 3:00, Frank Heckenbach wrote:
[...]
Output of "addr2line -e instdemo.exe < error.log" : ??:0 d:/gpc/obj/objects.pas:2816 ??:0 D:/gpc/win32/<implicit code>:400 D:/gpc/win32/<implicit code>:400 D:/gpc/win32/<implicit code>:400 d:/gpc/obj/objects.pas:2816 d:/gpc/win32/cclasses.pas:826 d:/gpc/win32/instdemo.pas:171 d:/gpc/win32/instdemo.pas:274 d:/gpc/win32/cwindows.pas:2056 d:/gpc/win32/cwindows.pas:2031 d:/gpc/win32/cwindows.pas:1770 d:/gpc/win32/cwindows.pas:860 ??:0 ??:0 ??:0 ??:0
What does this all mean?
Did you build the RTS with `-g'? I suppose not,
No.
so the RTS entries cannot be resolved by addr2line and are (for some strange reasons) reported as `<implicit code>:400'.
But since there are only three such entries (I get four in my test, but it may depend on optimization settings and perhaps backend versions), I suppose they correspond to the error handling routines (with a `-g' RTS, we'd know more certainly). This suggests that the range check error is indeed raised in line 2816 (+/-1 due to GPC line inaccuracies) of objects.pas (and not in a RTS routine called from there).
Indeed, that was the problem.
Are you sure this part was compiled with `{$R-}'?
The program itself was compiled with "{$R-}", but not that unit.
What does this code do?
Bug (does things with "Items [foo - 1]" without first checking that "foo > 0").
This range checking thing is very useful indeed :-)
Best regards, The Chief -------- Prof. Abimbola A. Olowofoyeku (The African Chief) web: http://www.greatchief.plus.com/