public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug gdb/17968] New: [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file
@ 2015-02-13 10:30 msebor at redhat dot com
2015-02-15 23:43 ` [Bug gdb/17968] " msebor at redhat dot com
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: msebor at redhat dot com @ 2015-02-13 10:30 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=17968
Bug ID: 17968
Summary: [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading
a separate debug file
Product: gdb
Version: 7.8
Status: NEW
Severity: normal
Priority: P2
Component: gdb
Assignee: unassigned at sourceware dot org
Reporter: msebor at redhat dot com
GDB 7.8 (and 7.7 and 7.6 before it) crashes while reading the .debug file for a
large number (over 380 out of about 1800 installed on my machine) of kernel
modules on RHEL 7. The stack trace is below. The crash only happens when both
the module and the debug file are read in a single operation and not in
separate steps (e.g., by invoking the file command first, and then symbol-file
next).
$ /usr/bin/gdb -q --args /build/gdb-7.8.2.bin/bin/gdb -q /lib/modules/$(uname
-r)/kernel/lib/cordic.ko
Reading symbols from /build/gdb-7.8.2.bin/bin/gdb...done.
(gdb) r
Starting program: /build/gdb-7.8.2.bin/bin/gdb -q
/lib/modules/3.10.0-227.el7.ppc64/kernel/lib/cordic.ko
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Detaching after fork from child process 55001.
Reading symbols from
/lib/modules/3.10.0-227.el7.ppc64/kernel/lib/cordic.ko...Reading symbols from
/usr/lib/debug/lib/modules/3.10.0-227.el7.ppc64/kernel/lib/cordic.ko.debug...
Program received signal SIGSEGV, Segmentation fault.
ppc64_elf_get_synthetic_symtab (abfd=<optimized out>,
static_count=<optimized out>, static_syms=<optimized out>,
dyn_count=<optimized out>, dyn_syms=<optimized out>, ret=0x3fffffffe120)
at elf64-ppc.c:3259
3259 if (!sym_exists_at (syms, opdsymend, symcount,
Missing separate debuginfos, use: debuginfo-install expat-2.1.0-8.el7.ppc64
glibc-2.17-78.el7.ppc64 ncurses-libs-5.9-13.20130511.el7.ppc64
python-libs-2.7.5-16.el7.ppc64 xz-libs-5.1.2-9alpha.el7.ppc64
zlib-1.2.7-13.el7.ppc64
(gdb) l
3254
3255 if (r->howto->type != R_PPC64_ADDR64)
3256 continue;
3257
3258 sym = *r->sym_ptr_ptr;
3259 if (!sym_exists_at (syms, opdsymend, symcount,
3260 sym->section->id, sym->value + r->addend))
3261 {
3262 ++count;
3263 size += sizeof (asymbol);
(gdb) p sym
$1 = (asymbol *) 0x0
The Valgrind output below shows a couple of invalid reads and some other
problems. The overlapping memcpy errors are due to GCC bug 65042 and most
likely benign.
$ valgrind /build/gdb-7.8.2.bin/bin/gdb -q /lib/modules/$(uname
-r)/kernel/lib/cordic.ko
==55015== Memcheck, a memory error detector
==55015== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==55015== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info
==55015== Command: /build/gdb-7.8.2.bin/bin/gdb -q
/lib/modules/3.10.0-227.el7.ppc64/kernel/lib/cordic.ko
==55015==
Reading symbols from
/lib/modules/3.10.0-227.el7.ppc64/kernel/lib/cordic.ko...==55015== Source and
destination overlap in memcpy(0xbe95a90, 0xbe95a90, 72)
==55015== at 0x408C908: memcpy (in
/usr/lib64/valgrind/vgpreload_memcheck-ppc64be-linux.so)
==55015== by 0x1029D853: compact_minimal_symbols (minsyms.c:1131)
==55015== by 0x1029D853: install_minimal_symbols (minsyms.c:1256)
==55015== by 0x10171B1B: elf_read_minimal_symbols (elfread.c:1220)
==55015== by 0x10171B1B: elf_symfile_read (elfread.c:1264)
==55015== by 0x1020F2A3: read_symbols (symfile.c:877)
==55015== by 0x1020EC9B: syms_from_objfile_1 (symfile.c:1080)
==55015== by 0x1020EC9B: syms_from_objfile (symfile.c:1096)
==55015== by 0x1020EC9B: symbol_file_add_with_addrs (symfile.c:1193)
==55015== by 0x1020F3F3: symbol_file_add_from_bfd (symfile.c:1282)
==55015== by 0x1020F3F3: symbol_file_add (symfile.c:1297)
==55015== by 0x1020F49B: symbol_file_add_main_1 (symfile.c:1322)
==55015== by 0x10247F3B: catch_command_errors_const.constprop.5 (main.c:378)
==55015== by 0x10248DDF: captured_main (main.c:1066)
==55015== by 0x10242A5F: catch_errors (exceptions.c:506)
==55015== by 0x10249507: gdb_main (main.c:1172)
==55015== by 0x10084A87: main (gdb.c:33)
==55015==
==55015== Source and destination overlap in memcpy(0xbe95f10, 0xbe95f10, 72)
==55015== at 0x408C908: memcpy (in
/usr/lib64/valgrind/vgpreload_memcheck-ppc64be-linux.so)
==55015== by 0x1029D87F: compact_minimal_symbols (minsyms.c:1133)
==55015== by 0x1029D87F: install_minimal_symbols (minsyms.c:1256)
==55015== by 0x10171B1B: elf_read_minimal_symbols (elfread.c:1220)
==55015== by 0x10171B1B: elf_symfile_read (elfread.c:1264)
==55015== by 0x1020F2A3: read_symbols (symfile.c:877)
==55015== by 0x1020EC9B: syms_from_objfile_1 (symfile.c:1080)
==55015== by 0x1020EC9B: syms_from_objfile (symfile.c:1096)
==55015== by 0x1020EC9B: symbol_file_add_with_addrs (symfile.c:1193)
==55015== by 0x1020F3F3: symbol_file_add_from_bfd (symfile.c:1282)
==55015== by 0x1020F3F3: symbol_file_add (symfile.c:1297)
==55015== by 0x1020F49B: symbol_file_add_main_1 (symfile.c:1322)
==55015== by 0x10247F3B: catch_command_errors_const.constprop.5 (main.c:378)
==55015== by 0x10248DDF: captured_main (main.c:1066)
==55015== by 0x10242A5F: catch_errors (exceptions.c:506)
==55015== by 0x10249507: gdb_main (main.c:1172)
==55015== by 0x10084A87: main (gdb.c:33)
==55015==
Reading symbols from
/usr/lib/debug/lib/modules/3.10.0-227.el7.ppc64/kernel/lib/cordic.ko.debug...==55015==
Invalid read of size 8
==55015== at 0x105A9D54: ppc64_elf_get_synthetic_symtab (elf64-ppc.c:3258)
==55015== by 0x10171A77: elf_read_minimal_symbols (elfread.c:1197)
==55015== by 0x10171A77: elf_symfile_read (elfread.c:1264)
==55015== by 0x1020F2A3: read_symbols (symfile.c:877)
==55015== by 0x1020EC9B: syms_from_objfile_1 (symfile.c:1080)
==55015== by 0x1020EC9B: syms_from_objfile (symfile.c:1096)
==55015== by 0x1020EC9B: symbol_file_add_with_addrs (symfile.c:1193)
==55015== by 0x1020F223: symbol_file_add_separate (symfile.c:1264)
==55015== by 0x10171CEB: elf_symfile_read (elfread.c:1351)
==55015== by 0x1020F2A3: read_symbols (symfile.c:877)
==55015== by 0x1020EC9B: syms_from_objfile_1 (symfile.c:1080)
==55015== by 0x1020EC9B: syms_from_objfile (symfile.c:1096)
==55015== by 0x1020EC9B: symbol_file_add_with_addrs (symfile.c:1193)
==55015== by 0x1020F3F3: symbol_file_add_from_bfd (symfile.c:1282)
==55015== by 0x1020F3F3: symbol_file_add (symfile.c:1297)
==55015== by 0x1020F49B: symbol_file_add_main_1 (symfile.c:1322)
==55015== by 0x10247F3B: catch_command_errors_const.constprop.5 (main.c:378)
==55015== by 0x10248DDF: captured_main (main.c:1066)
==55015== Address 0xbe981e0 is 272 bytes inside a block of size 296 free'd
==55015== at 0x40876CC: free (in
/usr/lib64/valgrind/vgpreload_memcheck-ppc64be-linux.so)
==55015== by 0x10391A77: xfree (common-utils.c:108)
==55015== by 0x101C74E7: do_my_cleanups (cleanups.c:155)
==55015== by 0x10171B27: elf_read_minimal_symbols (elfread.c:1221)
==55015== by 0x10171B27: elf_symfile_read (elfread.c:1264)
==55015== by 0x1020F2A3: read_symbols (symfile.c:877)
==55015== by 0x1020EC9B: syms_from_objfile_1 (symfile.c:1080)
==55015== by 0x1020EC9B: syms_from_objfile (symfile.c:1096)
==55015== by 0x1020EC9B: symbol_file_add_with_addrs (symfile.c:1193)
==55015== by 0x1020F3F3: symbol_file_add_from_bfd (symfile.c:1282)
==55015== by 0x1020F3F3: symbol_file_add (symfile.c:1297)
==55015== by 0x1020F49B: symbol_file_add_main_1 (symfile.c:1322)
==55015== by 0x10247F3B: catch_command_errors_const.constprop.5 (main.c:378)
==55015== by 0x10248DDF: captured_main (main.c:1066)
==55015== by 0x10242A5F: catch_errors (exceptions.c:506)
==55015== by 0x10249507: gdb_main (main.c:1172)
==55015==
==55015== Invalid read of size 8
==55015== at 0x105A9DB4: ppc64_elf_get_synthetic_symtab (elf64-ppc.c:3294)
==55015== by 0x10171A77: elf_read_minimal_symbols (elfread.c:1197)
==55015== by 0x10171A77: elf_symfile_read (elfread.c:1264)
==55015== by 0x1020F2A3: read_symbols (symfile.c:877)
==55015== by 0x1020EC9B: syms_from_objfile_1 (symfile.c:1080)
==55015== by 0x1020EC9B: syms_from_objfile (symfile.c:1096)
==55015== by 0x1020EC9B: symbol_file_add_with_addrs (symfile.c:1193)
==55015== by 0x1020F223: symbol_file_add_separate (symfile.c:1264)
==55015== by 0x10171CEB: elf_symfile_read (elfread.c:1351)
==55015== by 0x1020F2A3: read_symbols (symfile.c:877)
==55015== by 0x1020EC9B: syms_from_objfile_1 (symfile.c:1080)
==55015== by 0x1020EC9B: syms_from_objfile (symfile.c:1096)
==55015== by 0x1020EC9B: symbol_file_add_with_addrs (symfile.c:1193)
==55015== by 0x1020F3F3: symbol_file_add_from_bfd (symfile.c:1282)
==55015== by 0x1020F3F3: symbol_file_add (symfile.c:1297)
==55015== by 0x1020F49B: symbol_file_add_main_1 (symfile.c:1322)
==55015== by 0x10247F3B: catch_command_errors_const.constprop.5 (main.c:378)
==55015== by 0x10248DDF: captured_main (main.c:1066)
==55015== Address 0xbe981e0 is 272 bytes inside a block of size 296 free'd
==55015== at 0x40876CC: free (in
/usr/lib64/valgrind/vgpreload_memcheck-ppc64be-linux.so)
==55015== by 0x10391A77: xfree (common-utils.c:108)
==55015== by 0x101C74E7: do_my_cleanups (cleanups.c:155)
==55015== by 0x10171B27: elf_read_minimal_symbols (elfread.c:1221)
==55015== by 0x10171B27: elf_symfile_read (elfread.c:1264)
==55015== by 0x1020F2A3: read_symbols (symfile.c:877)
==55015== by 0x1020EC9B: syms_from_objfile_1 (symfile.c:1080)
==55015== by 0x1020EC9B: syms_from_objfile (symfile.c:1096)
==55015== by 0x1020EC9B: symbol_file_add_with_addrs (symfile.c:1193)
==55015== by 0x1020F3F3: symbol_file_add_from_bfd (symfile.c:1282)
==55015== by 0x1020F3F3: symbol_file_add (symfile.c:1297)
==55015== by 0x1020F49B: symbol_file_add_main_1 (symfile.c:1322)
==55015== by 0x10247F3B: catch_command_errors_const.constprop.5 (main.c:378)
==55015== by 0x10248DDF: captured_main (main.c:1066)
==55015== by 0x10242A5F: catch_errors (exceptions.c:506)
==55015== by 0x10249507: gdb_main (main.c:1172)
==55015==
done.
done.
(gdb) q
==55015==
==55015== HEAP SUMMARY:
==55015== in use at exit: 2,520,075 bytes in 25,371 blocks
==55015== total heap usage: 58,711 allocs, 33,340 frees, 9,252,523 bytes
allocated
==55015==
==55015== LEAK SUMMARY:
==55015== definitely lost: 33,643 bytes in 11 blocks
==55015== indirectly lost: 16,280 bytes in 5 blocks
==55015== possibly lost: 404,864 bytes in 2,239 blocks
==55015== still reachable: 2,065,288 bytes in 23,116 blocks
==55015== suppressed: 0 bytes in 0 blocks
==55015== Rerun with --leak-check=full to see details of leaked memory
==55015==
==55015== For counts of detected and suppressed errors, rerun with: -v
==55015== ERROR SUMMARY: 19 errors from 4 contexts (suppressed: 0 from 0)
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug gdb/17968] [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file
2015-02-13 10:30 [Bug gdb/17968] New: [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file msebor at redhat dot com
@ 2015-02-15 23:43 ` msebor at redhat dot com
2015-02-16 2:33 ` msebor at redhat dot com
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: msebor at redhat dot com @ 2015-02-15 23:43 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=17968
--- Comment #1 from Martin Sebor <msebor at redhat dot com> ---
The following test case reduced from a build of the kernel module in the
problem Description reproduces the SEGV with the top of trunk. Tthough the
program faults in a different function, Valgrind reports the same Invalid read.
$ set -x && cat t.c && gcc -c -g t.c && cat t.lds && ld -r -T t.lds --build-id
-o t.ko t.o && cp t.ko t.sym.ko && objcopy --only-keep-debug t.ko t.ko.debug &&
strip --strip-debug t.ko && objcopy --add-gnu-debuglink=t.ko.debug t.ko &&
/build/gdb-fsf/gdb/gdb -q -batch t.sym.ko && /build/gdb-fsf/gdb/gdb -q -batch
t.ko; set +x
+ cat t.c
void foo (void) __attribute__ ((section (".bar")));
void foo (void) { }
+ gcc -c -g t.c
+ cat t.lds
SECTIONS {
.foobar : { *(.bar) }
}
+ ld -r -T t.lds --build-id -o t.ko t.o
+ cp t.ko t.sym.ko
+ objcopy --only-keep-debug t.ko t.ko.debug
+ strip --strip-debug t.ko
+ objcopy --add-gnu-debuglink=t.ko.debug t.ko
+ /build/gdb-fsf/gdb/gdb -q -batch t.sym.ko
+ /build/gdb-fsf/gdb/gdb -q -batch t.ko
Segmentation fault
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug gdb/17968] [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file
2015-02-13 10:30 [Bug gdb/17968] New: [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file msebor at redhat dot com
2015-02-15 23:43 ` [Bug gdb/17968] " msebor at redhat dot com
@ 2015-02-16 2:33 ` msebor at redhat dot com
2015-02-16 22:33 ` sergiodj at redhat dot com
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: msebor at redhat dot com @ 2015-02-16 2:33 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=17968
--- Comment #2 from Martin Sebor <msebor at redhat dot com> ---
The problem appears to be due to the change to gdb/elfread.c introduced in the
commit below:
commit 63524580f8372e38a6a62fd875a4252068c31150
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date: Sun Apr 17 18:38:46 2011 +0000
...
gdb/
Fix convert_code_addr_to_desc_addr for ppc64 files after eu-strip.
* elfread.c (elf_symfile_read): New variable synth_abfd, pass it to
bfd_get_synthetic_symtab.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug gdb/17968] [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file
2015-02-13 10:30 [Bug gdb/17968] New: [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file msebor at redhat dot com
2015-02-15 23:43 ` [Bug gdb/17968] " msebor at redhat dot com
2015-02-16 2:33 ` msebor at redhat dot com
@ 2015-02-16 22:33 ` sergiodj at redhat dot com
2021-05-18 20:48 ` cel at us dot ibm.com
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: sergiodj at redhat dot com @ 2015-02-16 22:33 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=17968
Sergio Durigan Junior <sergiodj at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jan.kratochvil at redhat dot com,
| |sergiodj at redhat dot com
--- Comment #3 from Sergio Durigan Junior <sergiodj at redhat dot com> ---
Adding Jan to the Cc list to keep him on the loop.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug gdb/17968] [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file
2015-02-13 10:30 [Bug gdb/17968] New: [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file msebor at redhat dot com
` (2 preceding siblings ...)
2015-02-16 22:33 ` sergiodj at redhat dot com
@ 2021-05-18 20:48 ` cel at us dot ibm.com
2021-05-18 20:50 ` cel at us dot ibm.com
2021-10-05 20:20 ` will_schmidt at vnet dot ibm.com
5 siblings, 0 replies; 7+ messages in thread
From: cel at us dot ibm.com @ 2021-05-18 20:48 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=17968
Carl E Love <cel at us dot ibm.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |cel at us dot ibm.com
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug gdb/17968] [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file
2015-02-13 10:30 [Bug gdb/17968] New: [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file msebor at redhat dot com
` (3 preceding siblings ...)
2021-05-18 20:48 ` cel at us dot ibm.com
@ 2021-05-18 20:50 ` cel at us dot ibm.com
2021-10-05 20:20 ` will_schmidt at vnet dot ibm.com
5 siblings, 0 replies; 7+ messages in thread
From: cel at us dot ibm.com @ 2021-05-18 20:50 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=17968
--- Comment #4 from Carl E Love <cel at us dot ibm.com> ---
I was looking at this bug. I am trying to reproduce it using the current gdb.
So far I have not been able to reproduce it using a ppc64 module. I played a
bit with the second test and also was not able to reproduce the issue.
Is this still an issue? If not, can we close the issue?
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug gdb/17968] [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file
2015-02-13 10:30 [Bug gdb/17968] New: [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file msebor at redhat dot com
` (4 preceding siblings ...)
2021-05-18 20:50 ` cel at us dot ibm.com
@ 2021-10-05 20:20 ` will_schmidt at vnet dot ibm.com
5 siblings, 0 replies; 7+ messages in thread
From: will_schmidt at vnet dot ibm.com @ 2021-10-05 20:20 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=17968
Will Schmidt <will_schmidt at vnet dot ibm.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |will_schmidt at vnet dot ibm.com
--- Comment #5 from Will Schmidt <will_schmidt at vnet dot ibm.com> ---
I spun some older builds, and was not able to duplicate the reported
problem on anything recent. (attempted 11.1, 10.2, 9.2, 8.0, 7.12 on a ppc64
system). I wasn't able to build older releases for assorted reasons.
Per a review of the git logs, and comparing the dates, I suspect the reported
issue was resolved by this commit, on Feb 26, 2015.
"
commit 80c570537e380c1b8e48754c0ddbce2abcde2d00
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date: Thu Feb 26 14:08:01 2015 +0100
SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file
"
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-10-05 20:20 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-13 10:30 [Bug gdb/17968] New: [ppc64] SEGV in ppc64_elf_get_synthetic_symtab reading a separate debug file msebor at redhat dot com
2015-02-15 23:43 ` [Bug gdb/17968] " msebor at redhat dot com
2015-02-16 2:33 ` msebor at redhat dot com
2015-02-16 22:33 ` sergiodj at redhat dot com
2021-05-18 20:48 ` cel at us dot ibm.com
2021-05-18 20:50 ` cel at us dot ibm.com
2021-10-05 20:20 ` will_schmidt at vnet dot ibm.com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).