[Bug 1233185] Re: gdb-multiarch cannot read ARM cores: "wrong size gregset struct in core file"
Brian Murray
brian at ubuntu.com
Mon Jun 30 22:22:29 UTC 2014
This patch seems to have disappeared from the Ubuntu versions of gdb in
Saucy, Trusty and Utopic. I've actually no idea what happened to the
Saucy version of the package 7.6-5ubuntu3. I'll take care of fixing this
in Utopic and Trusty. The test case in the description is still valid.
** Changed in: gdb (Ubuntu)
Importance: Undecided => High
** Changed in: gdb (Ubuntu)
Status: Fix Released => Triaged
** Also affects: gdb (Ubuntu Trusty)
Importance: Undecided
Status: New
** Changed in: gdb (Ubuntu)
Assignee: (unassigned) => Brian Murray (brian-murray)
** Changed in: gdb (Ubuntu Trusty)
Assignee: (unassigned) => Brian Murray (brian-murray)
** Changed in: gdb (Ubuntu Trusty)
Importance: Undecided => High
** Changed in: gdb (Ubuntu Trusty)
Status: New => Triaged
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gdb in Ubuntu.
https://bugs.launchpad.net/bugs/1233185
Title:
gdb-multiarch cannot read ARM cores: "wrong size gregset struct in
core file"
Status in “gdb” package in Ubuntu:
In Progress
Status in “gdb” source package in Trusty:
In Progress
Status in “gdb” package in Debian:
Fix Released
Bug description:
We are getting complaints that the Launchpad apport retracers cannot
create proper symbolic stack traces for crashes on ARM. It seems gdb-
multiarch does not get along with our core dumps on ARM any more.
Reproducing the full apport-retrace environment is a bit complicated,
so I reduced this to a very simple test case:
Log into an ARM machine, like the Nexus G4, or porter-
armhf.canonical.com (shedir), using "schroot -c saucy-armhf".
1. create a core dump of bash:
$ cd /tmp/
$ bash -c 'ulimit -c unlimited; kill -SEGV $$'
2. Run it with gdb:
$ gdb --batch --ex 'file /bin/bash' --ex 'core-file core' --ex 'bt'
Core was generated by `bash -c ulimit -c unlimited; kill -SEGV $$'.
Program terminated with signal 11, Segmentation fault.
#0 0x00007f2eae349257 in kill () at ../sysdeps/unix/syscall-template.S:8181
../sysdeps/unix/syscall-template.S: Datei oder Verzeichnis nicht gefunden.
#0 0x00007f2eae349257 in kill () at ../sysdeps/unix/syscall-template.S:81
#1 0x00000000004418a1 in kill_pid ()
[...]
There are not a lot of symbols as usually one doesn't have bash-
dbgsym etc. installed, but it's clearly able to produce a stack trace.
3. Run the same with gdb-multiarch:
$ gdb-multiarch --batch --ex 'file /bin/bash' --ex 'core-file core' --ex 'bt'
warning: wrong size gregset struct in core file
Core was generated by `bash -c ulimit -c unlimited; kill -SEGV $$'.
Program terminated with signal 11, Segmentation fault.
warning: wrong size gregset struct in core file
#0 <unavailable> in ?? ()
#0 <unavailable> in ?? ()
PC not available
FTR, Apport uses gdb-multiarch on amd64, and --ex 'set architecture
arm' --ex 'set gnutarget elf32-littlearm' to generate stack traces for
ARM coredumps on x86 (using binaries/libaries/debug symbols for ARM
that get unpacked into a temporary directory). The full invocation
looks something like this:
gdb-multiarch --ex 'set architecture arm' --ex 'set gnutarget
elf32-littlearm' --ex 'set debug-file-directory /tmp/s/usr/lib/debug'
--ex 'set solib-absolute-prefix /tmp/s' --ex 'file /tmp/s/bin/bash'
--ex 'core-file CoreDump' --ex 'bt full' --batch
But as gdb-multiarch does not even work on a native ARM machine for a
native ARM core dump of the very same machine/OS, I guess it's
something more fundamental which got broken there.
The same test case on amd64 works fine BTW, i. e. gdb-multiarch can
process amd64 binaries on amd64.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/1233185/+subscriptions
More information about the foundations-bugs
mailing list