apport-retrace does not update libraries or executable in a sandbox
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Apport |
Fix Released
|
Undecided
|
Martin Pitt | ||
apport (Ubuntu) |
Fix Released
|
Undecided
|
Martin Pitt |
Bug Description
I was trying to retrace a crash that failed with the retracers in the Ubuntu Error Tracker. I'm using gdb-multiarch from the following PPA (https:/
PYTHONPATH=
uction/apport python /srv/daisy.
isy.staging.
With that bt full would return:
Thread 1 (LWP 2270):
#0 __libc_do_syscall () at ../ports/
No locals.
#1 0xb6a3805e in __GI_raise (sig=sig@entry=6) at ../nptl/
_a1 = 0
_a3tmp = 6
_a1tmp = 0
_a3 = 6
_nametmp = 268
_a2tmp = 2270
_a2 = 2270
_name = 268
_sys_result = <optimized out>
pd = 0xb680e000
pid = 0
selftid = 2270
#2 0xb6a38d4e in __GI_abort () at abort.c:89
save_stage = 2
act = {__sigaction_
1, 5, 0, 3199521440, 3064036264, 1, 3064946200, 1, 10212828, 3199521044, 3069005824, 3199521440, 3069141488, 10212360,
sigs = {__val = {32, 0 <repeats 31 times>}}
#3 0xb6b892c4 in ?? ()
from /srv/daisy.
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
However, using apport-retrace without the sandbox-dir command creates a more complete backtrace like in http://
I've tracked this down to the following from needed_
# grab as much as we can
for l in libs:
if os.path.
There is no check to see if the sandbox version of the library is current or not, subsequently the library may be out of date which was causing the retrace to fail.
I've verified this by checking the ctime of the file before and after commenting out the "if os.path.exists()" check.
ls -lch /srv/daisy.
lrwxrwxrwx 1 root root 19 Jul 11 02:19 /srv/daisy.
ls -lch /srv/daisy.
lrwxrwxrwx 1 root root 19 Aug 4 22:27 /srv/daisy.
Related branches
Changed in apport (Ubuntu): | |
assignee: | nobody → Martin Pitt (pitti) |
You can also see the change in behavior by running apport-retrace with the -v switch and watching for messages like the following:
dynamically loaded /lib/arm- linux-gnueabihf /libbz2. so.1.0. 4 needs package libbz2-1.0, queueing arm-linux- gnueabihf/ libstdc+ +.so.6. 0.20 needs package libstdc++6, queueing linux-gnueabihf /libglib- 2.0.so. 0.4101. 0 needs package libglib2.0-0, queueing
dynamically loaded /usr/lib/
dynamically loaded /lib/arm-
This ends up being a problem for the Error Tracker retracers as they try to use the same sandbox directory and don't get restarted very often.