Red Hat Bugzilla – Bug 167693
Uninitialised free when running "info line main"
Last modified: 2015-01-07 19:10:35 EST
1. create a small hello world C program
2. compile it with debugging
3. run the program under gdb
4. type "info line main" in gdb
Reproduceable with the RHEL3 U5 gdb, and the RHEL4 U2 candidate.
valgrind says there's an invalid free:
==21896== Invalid free() / delete / delete
==21896== at 0x3414A75D: free (vg_replace_malloc.c:153)
==21896== by 0x80F3229: find_line_pc_range (symtab.c:2432)
==21896== by 0x80DE1D9: ??? (source.c:1351)
==21896== by 0x80845C5: execute_command (top.c:733)
==21896== Address 0x9C5FDEE8 is on thread 1's stack
Line 5 of "tmp.c" starts at address 0x8048368 <main>
and ends at 0x8048384 <main+28>.
In gdb/symtab.c, find_line_pc_range(), pc_list is only defined if startaddr is
0, but freed unconditionally. Patch attached.
Created attachment 118546 [details]
Patch applied as of gdb-188.8.131.52-1.66
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.