[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