[fpc-devel] Infodwrf crashes, because apparently invalid dwarf info in file
Martin
lazarus at mfriebe.de
Fri Dec 10 08:11:59 CET 2010
Before I write a bug report, without having any data at all, maybe
someone can give me a hint how I may collect information that would make
sense
I've compile Lazarus with fpc rev 16374 (and external linker -Xe)
fpc(rtl) build with -gw
Lazarus with -gw -godwarfset
I have just freshly rebuild both enabling debug in Infodwrf....
When trying to write a stacktrace I get a runtime error 131 from a very
long debug session, stepping by hand through the loop that loads every
tiny segment of a huge amount of dwarf info (I must have stepped
hundreds of times), I saw the following:
The value 131 in the stacktrace as param to seek => that is a replacment
that drops in due to the runtime error => before the runtime error (I
actually managed to step there) it was a huge value.
in PARSECOMPILATIONUNIT
DEBUG_WRITELN('Unit length: ', unit_length);
if (temp_length <> $ffffffff) then begin
DEBUG_WRITELN('32 bit DWARF detected');
ReadNext(header32, sizeof(header32));
header32 (from after the crash only)
record TLINENUMBERPROGRAMHEADER32 {
UNIT_LENGTH = 0,
VERSION = 0,
LENGTH = 3972530176,
MINIMUM_INSTRUCTION_LENGTH = 221,
DEFAULT_IS_STMT = true (9),
LINE_BASE = -2,
LINE_RANGE = 173,
OPCODE_BASE = 65}
*IF* gdb reports that right ....
Below is the stacktrace (gdb has issues displaying the correct values in
some places)
and the end of the debug output DEBUG_DWARF_PARSER
Any ideas where and what to look for?
#0 HANDLEERRORADDRFRAME(165538076, 0x83, 0x9dde91c) at ..\inc\system.inc:940
#1 HANDLEERRORFRAME(131, 0x83) at ..\inc\system.inc:970
#2 fpc_iocheck at ..\inc\system.inc:682
#3 SEEK(18642842419200131) at ..\inc\lnfodwrf.pp:205
#4 PARSECOMPILATIONUNIT(131, 710980657026841489, @0x83: <error reading
variable>, @0x83: <error reading variable>, @0x83: <error reading
variable>) at ..\inc\lnfodwrf.pp:569
#5 GETLINEINFO(131, @0x423b91:
#199#5'0'#141'1'#1#0#0'f'#199#5'@'#141'1'#1#0#0#201#194#8#0#0#0#0#0#0#0#0#0#0'U'#137#229#131#236#8#137']'#248#187#255#255#255#255'f'#161'@'#141'1'#1'f;'#5'0'#141'1'#1'|ff'#199#5'@'#141'1'#1#0#0'f'#199#5'0'#141'1'#1'd'#0#139#21#144#141'1'#1#161#160#141'1'#1')'#194#15#191#5'0'#141'1'#1'9'#194'}'#19#161,
@0x83: <error reading variable>, @0x83: <error reading variable>) at
..\inc\lnfodwrf.pp:746
#6 DWARFBACKTRACESTR(0x9dde924) at ..\inc\lnfodwrf.pp:768
Current state : address = 0000000000D5A690 file_id = 1 line = 38 column
= 1 is_stmt = TRUE basic_block = FALSE end_sequence = FALSE prolouge_end
= FALSE epiloug
e_begin = FALSE isa = 0
Unit length: 271
32 bit DWARF detected
Opcode parameter count table
Opcode[1] - 0 parameters
Opcode[2] - 1 parameters
Opcode[3] - 1 parameters
Opcode[4] - 1 parameters
Opcode[5] - 1 parameters
Opcode[6] - 0 parameters
Opcode[7] - 0 parameters
Opcode[8] - 0 parameters
Opcode[9] - 1 parameters
Opcode[10] - 0 parameters
Opcode[11] - 0 parameters
Opcode[12] - 1 parameters
Reading directories...
Reading filenames...
Skipping filename : sysinitpas.pp
Skipping LEB128 : 0
Skipping LEB128 : 0
Skipping LEB128 : 0
Next opcode:
DW_LNE_SET_ADDRESS (0000000000DC0480)
Next opcode:
DW_LNS_SET_COLUMN (7)
Next opcode:
Special opcode $2B address increment: 0 new line: 31
Current state : address = 0000000000DC0480 file_id = 1 line = 32 column
= 7 is_stmt = TRUE basic_block = FALSE end_sequence = FALSE prolouge_end
= FALSE epiloug
e_begin = FALSE isa = 0
Unit length: 4
32 bit DWARF detected
Opcode parameter count table
Opcode[1] - 0 parameters
Opcode[2] - 0 parameters
Opcode[3] - 0 parameters
Opcode[4] - 0 parameters
Opcode[5] - 0 parameters
Opcode[6] - 0 parameters
Opcode[7] - 0 parameters
Opcode[8] - 0 parameters
Opcode[9] - 0 parameters
Opcode[10] - 0 parameters
Opcode[11] - 0 parameters
Opcode[12] - 0 parameters
Opcode[13] - 0 parameters
Opcode[14] - 0 parameters
Opcode[15] - 0 parameters
Opcode[16] - 0 parameters
Opcode[17] - 0 parameters
Opcode[18] - 0 parameters
Opcode[19] - 0 parameters
Opcode[20] - 0 parameters
Opcode[21] - 0 parameters
Opcode[22] - 0 parameters
Opcode[23] - 0 parameters
Opcode[24] - 0 parameters
Opcode[25] - 0 parameters
Opcode[26] - 0 parameters
Opcode[27] - 0 parameters
Opcode[28] - 0 parameters
Opcode[29] - 0 parameters
Opcode[30] - 0 parameters
Opcode[31] - 0 parameters
Opcode[32] - 0 parameters
Opcode[33] - 0 parameters
Opcode[34] - 0 parameters
Opcode[35] - 0 parameters
Opcode[36] - 0 parameters
Opcode[37] - 0 parameters
Opcode[38] - 0 parameters
Opcode[39] - 0 parameters
Opcode[40] - 0 parameters
Opcode[41] - 0 parameters
Opcode[42] - 0 parameters
Opcode[43] - 0 parameters
Opcode[44] - 0 parameters
Opcode[45] - 0 parameters
Opcode[46] - 0 parameters
Opcode[47] - 0 parameters
Opcode[48] - 0 parameters
Opcode[49] - 0 parameters
Opcode[50] - 0 parameters
Opcode[51] - 0 parameters
Opcode[52] - 0 parameters
Opcode[53] - 0 parameters
Opcode[54] - 0 parameters
Opcode[55] - 0 parameters
Opcode[56] - 0 parameters
Opcode[57] - 0 parameters
Opcode[58] - 0 parameters
Opcode[59] - 0 parameters
Opcode[60] - 0 parameters
Opcode[61] - 0 parameters
Opcode[62] - 0 parameters
Opcode[63] - 0 parameters
Opcode[64] - 0 parameters
Reading directories...
Reading filenames...
More information about the fpc-devel
mailing list