"Cannot access memory at address" errors with gdb 10.1 in Lazarus
Original Reporter info from Mantis: Artlav
-
Reporter name: Artyom
Original Reporter info from Mantis: Artlav
- Reporter name: Artyom
Description:
Lazarus gtk2 built from git (Also tried on 2.0.12), Arch Linux freshly updated on x86-64.
Make a simple test program:
procedure main;
var a:array of string;
i:integer;
begin
setlength(a,4);
for i:=0 to 3 do a[i]:='asd';
for i:=0 to 3 do writeln(a[i]);
end;
Run it in Lazarus, put a breakpoint on or after writeln, mouse over a (or open it in inspection dialog).
With gdb 9.2 and earlier the result would be an inspection popup with 4 'asd' strings correctly parsed.
With gdb 10.1 and newer the result would be 4 lines of "Cannot access memory at address 0xfffdd5554b1d71c0"
Note that the addresses in the error are nowhere near @a[0][1], @a[0] or @a.
Dumping the GDB logs, with 10.1 it goes:
-data-evaluate-expression A^[3]
^error,msg="Cannot access memory at address 0xfffdd5554b1d71c0"
And with 9.2 it goes:
-data-evaluate-expression A^[3]
^done,value="0x441018 'asd'"
With all else being identical, give or take version numbers.
I've poked around the code, and at least FGDBVersionMajor, FGDBVersionMinor and FGDBVersionRev appear to be set correctly.
Not sure where else to look for it, might be something related to debug symbols, or some bug in gdb itself.
All in all this is a rather annoying issue, since this applies to a lot of data structures and non-trivial arrays.
Mantis conversion info:
- Mantis ID: 38674
- Version: 2.0.12