Red Hat Bugzilla – Bug 167694
Uninitialised free when running "info line main"
Last modified: 2015-01-07 19:10:35 EST
+++ This bug was initially created as a clone of Bug #167693 +++
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 118547 [details]
As of gdb-184.108.40.206-1.67, the patch has been incorporated.
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.