GDB fails to get a valid backtrace while debugging a Webkit SIGSEGV
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linaro GDB |
Invalid
|
Undecided
|
Unassigned | ||
gdb (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
Binary package hint: gdb
Ubuntu libwebkitgtk-1.0-0 1.3.12-0ubuntu2 package crashes while initializing Webkit with a SIGSEGV (bug 728211) on ARM.
While starting the Webkit-only Browser example (/usr/lib/
ubuntu@
GNU gdb (GDB) 7.2-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux-
For bug reporting instructions, please see:
<http://
Reading symbols from /usr/lib/
done.
(gdb) set follow-fork-mode child
(gdb) r
Starting program: /usr/lib/
[Thread debugging using libthread_db enabled]
[New Thread 0x438022a0 (LWP 2513)]
[New Thread 0x441022a0 (LWP 2514)]
[New Thread 0x4779d2a0 (LWP 2515)]
[Thread 0x4779d2a0 (LWP 2515) exited]
Program received signal SIGSEGV, Segmentation fault.
0x441e2a0e in ?? ()
(gdb) bt
#0 0x441e2a0e in ?? ()
#1 0x47feb702 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
I also failed to get a backtrace when using current Linaro GDB (7.2-2011.02-1-bzr) from lp:gdb-linaro
ProblemType: Bug
DistroRelease: Ubuntu 11.04
Package: gdb 7.2-1ubuntu8
ProcVersionSign
Uname: Linux 2.6.35-1102-omap4 armv7l
Architecture: armel
Date: Thu Mar 3 01:24:47 2011
ProcEnviron:
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: gdb
UpgradeStatus: No upgrade log present (probably fresh install)
Changed in gdb-linaro: | |
status: | New → Invalid |
Changed in gdb (Ubuntu): | |
status: | New → Invalid |
It seems webkit has a JIT that generates assembler code at runtime. The crash happens while executing one of those generated blocks of code.
Since there is no debug or unwind information, or even basic symbol information, available for such generated code, there really is not much GDB can do here.
In theory, recent GDBs provide an interface for a JIT to register symbol information for generated code at runtime, but it appears the webkit JIT does make use of this.