Re: [patch] Fix a reread_symbols regression by mmap [Re: [patch] Use mmap instead of obstack_alloc for dwarf debug sections.]

Paul Pluzhnikov
2009-06-23T17:35:49Z

[-- Attachment #1: Type: text/plain, Size: 419 bytes --]

On Tue, Jun 23, 2009 at 8:03 AM, Jan
Kratochvil<jan.kratochvil@redhat.com> wrote:

> while sure your patch is great it has a regression.  Assuming a regression
> reproducer needs to link GDB with -lmcheck (but did verify it).

The problem also shows up under Valgrind (log attached).

> This patch will fix back (tested on {x86_64,i686}-fedora-linux-gnu):

Looks good to me.

Thanks,
--
Paul Pluzhnikov

[-- Attachment #2: gdb-valgrind.txt --]
[-- Type: text/plain, Size: 3567 bytes --]

(gdb) shell touch /usr/local/google/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/testsuite/gdb.base/reread^M
(gdb) run ^M
The program being debugged has been started already.^M
Start it from the beginning? (y or n) y^M
`/usr/local/google/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/testsuite/gdb.base/reread' has changed; re-reading symbols.^M
==8569== Invalid read of size 4^M
==8569== at 0x52E264: munmap_section_buffer /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/dwarf2read.c:10937^M
==8569== by 0x52E2DB: dwarf2_per_objfile_cleanup /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/dwarf2read.c:10957^M
==8569== by 0x448209: clear_objfile_data /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/objfiles.c:875^M
==8569== by 0x4E4152: reread_symbols /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/symfile.c:2374^M
==8569== by 0x4EF305: run_command_1 /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/infcmd.c:490^M
==8569== by 0x44D433: execute_command /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/top.c:442^M
==8569== by 0x5042F8: command_handler /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/event-top.c:511^M
==8569== by 0x504E4B: command_line_handler /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/event-top.c:735^M
==8569== by 0x5B53D2: rl_callback_read_char /usr/local/google/ppluzhnikov/Archive/sourceware.org/gdb/build/readline/../../src/readline/callback.c:205^M
==8569== by 0x504428: rl_callback_read_char_wrapper /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/event-top.c:178^M
==8569== by 0x502F20: process_event /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/event-loop.c:394^M
==8569== by 0x503D97: gdb_do_one_event /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/event-loop.c:447^M
==8569== Address 0x5b78aa0 is 3,480 bytes inside a block of size 4,072 free'd^M
==8569== at 0x4C1DE0F: free /tmp/vg/coregrind/m_replacemalloc/vg_replace_malloc.c:322^M
==8569== by 0x576D0E7: obstack_free /usr/grte/v1/debug-src/src/glibc-2.3.6/malloc/obstack.c:347^M
==8569== by 0x4E40CD: reread_symbols /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/symfile.c:2360^M
==8569== by 0x4EF305: run_command_1 /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/infcmd.c:490^M
==8569== by 0x44D433: execute_command /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/top.c:442^M
==8569== by 0x5042F8: command_handler /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/event-top.c:511^M
==8569== by 0x504E4B: command_line_handler /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/event-top.c:735^M
==8569== by 0x5B53D2: rl_callback_read_char /usr/local/google/ppluzhnikov/Archive/sourceware.org/gdb/build/readline/../../src/readline/callback.c:205^M
==8569== by 0x504428: rl_callback_read_char_wrapper /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/event-top.c:178^M
==8569== by 0x502F20: process_event /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/event-loop.c:394^M
==8569== by 0x503D97: gdb_do_one_event /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/event-loop.c:447^M
==8569== by 0x4FE6AA: catch_errors /home/ppluzhnikov/Archive/sourceware.org/gdb/build/gdb/../../src/gdb/exceptions.c:510^M