Package: apt
Version: 1.9.4
I experienced an unexpected SIGABRT signal being raised with apt(1). I
saw the following:
$ sudo apt install trousers
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
trousers
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 119 kB of archives.
After this operation, 369 kB of additional disk space will be used.
Get:1 http://ca.archive.ubuntu.com/ubuntu eoan/universe amd64
trousers amd64 0.3.14+fixed1-1build1 [119 kB]
Fetched 119 kB in 0s (257 kB/s)
malloc(): unsorted double linked list corrupted
Aborted
This appears to be a very difficult bug to reproduce. It only appeared
once and with the second invocation succeeding without issue.
Fortunately apport managed to preserve the core dump. After unpacking
it with apport-unpack and loading the core dump with gdb, the full
stack trace is as follows:
#0 __GI_raise (sig=sig@entry=6) at
../sysdeps/unix/sysv/linux/raise.c:50
set = {__val = {0, 16383, 9223372036854775808, 16383,
9223372036854775808, 16384, 0, 0,
18446742974197923840, 65280, 18446744073709551615,
18446744073709551615,
8317666021292143937, 110386773516660,
4629771061636907072, 4629771061636907072}}
pid = <optimized out>
tid = <optimized out>
ret = <optimized out>
#1 0x00007fd1dde66899 in __GI_abort () at abort.c:79
save_stage = 1
act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction
= 0x0}, sa_mask = {__val = {
0 <repeats 16 times>}}, sa_flags = 0, sa_restorer =
0x0}
sigs = {__val = {32, 0 <repeats 15 times>}}
#2 0x00007fd1dded138e in __libc_message (action=action@entry=do_abo
rt,
fmt=fmt@entry=0x7fd1ddffa3a5 "%s\n") at
../sysdeps/posix/libc_fatal.c:181
ap = {{gp_offset = 24, fp_offset = 32764, overflow_arg_area
= 0x7ffc2ecb2010,
reg_save_area = 0x7ffc2ecb1fa0}}
fd = 2
list = <optimized out>
nlist = <optimized out>
cp = <optimized out>
written = <optimized out>
#3 0x00007fd1dded94dc in malloc_printerr (
str=str@entry=0x7fd1ddffc508 "malloc(): unsorted double linked
list corrupted") at malloc.c:5332
No locals.
#4 0x00007fd1ddedc4bc in _int_malloc (av=av@entry=0x7fd1de02bb80
<main_arena>, bytes=bytes@entry=26)
at malloc.c:3744
next = <optimized out>
iters = <optimized out>
nb = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
idx = 3
bin = <optimized out>
victim = <optimized out>
size = <optimized out>
victim_index = <optimized out>
remainder = <optimized out>
remainder_size = <optimized out>
block = <optimized out>
bit = <optimized out>
map = <optimized out>
fwd = <optimized out>
bck = <optimized out>
tcache_unsorted_count = 0
tcache_nb = 48
tc_idx = 1
return_cached = <optimized out>
__PRETTY_FUNCTION__ = "_int_malloc"
#5 0x00007fd1ddede304 in __GI___libc_malloc (bytes=bytes@entry=26)
at malloc.c:3058
ar_ptr = <optimized out>
victim = <optimized out>
hook = <optimized out>
tbytes = <optimized out>
tc_idx = <optimized out>
__PRETTY_FUNCTION__ = "__libc_malloc"
#6 0x00007fd1de0f71d9 in operator new (sz=26) at
../../../../src/libstdc++-v3/libsupc++/new_op.cc:50
p = <optimized out>
#7 0x00007fd1de2ca4bd in void std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char>
>::_M_construct<char*>(char*, char*, std::forward_iterator_tag) ()
from /lib/x86_64-linux-gnu/libapt-pkg.so.5.90
--Type <RET> for more, q to quit, c to continue without paging--c
No symbol table info available.
#8 0x00007fd1de3a58a3 in
pkgCache::PkgIterator::FullName[abi:cxx11](bool const&) const ()
from /lib/x86_64-linux-gnu/libapt-pkg.so.5.90
No symbol table info available.
#9 0x00007fd1de378e86 in pkgDepCache::writeStateFile(OpProgress*,
bool) () from /lib/x86_64-linux-gnu/libapt-pkg.so.5.90
No symbol table info available.
#10 0x00007fd1de369980 in
pkgDPkgPM::Go(APT::Progress::PackageManager*) () from /lib/x86_64-
linux-gnu/libapt-pkg.so.5.90
No symbol table info available.
#11 0x00007fd1de39d9f0 in
pkgPackageManager::DoInstallPostFork(APT::Progress::PackageManager*)
() from /lib/x86_64-linux-gnu/libapt-pkg.so.5.90
No symbol table info available.
#12 0x00007fd1de44433f in InstallPackages(CacheFile&, bool, bool,
bool) () from /lib/x86_64-linux-gnu/libapt-private.so.0.0
No symbol table info available.
#13 0x00007fd1de44a2bc in DoInstall(CommandLine&) () from
/lib/x86_64-linux-gnu/libapt-private.so.0.0
No symbol table info available.
#14 0x00007fd1de306aaf in
CommandLine::DispatchArg(CommandLine::Dispatch const*, bool) () from
/lib/x86_64-linux-gnu/libapt-pkg.so.5.90
No symbol table info available.
#15 0x00007fd1de4397d7 in DispatchCommandLine(CommandLine&,
std::vector<CommandLine::Dispatch,
std::allocator<CommandLine::Dispatch> > const&) () from /lib/x86_64-
linux-gnu/libapt-private.so.0.0
No symbol table info available.
#16 0x0000557faf17e3ea in ?? ()
No symbol table info available.
#17 0x00007fd1dde681e3 in __libc_start_main (main=0x557faf17e320,
argc=3, argv=0x7ffc2ecb3718, init=<optimized out>, fini=<optimized
out>, rtld_fini=<optimized out>, stack_end=0x7ffc2ecb3708) at
../csu/libc-start.c:308
self = <optimized out>
result = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0,
3588779076796669643, 94006886786240, 140721093555984, 0, 0,
7262868277543689931, 7246575941430795979}, mask_was_saved = 0}},
priv = {pad = {0x0, 0x0, 0x7ffc2ecb3738, 0x7fd1de4fa190}, data =
{prev = 0x0, cleanup = 0x0, canceltype = 785069880}}}
not_first_call = <optimized out>
#18 0x0000557faf17e4ee in ?? ()
No symbol table info available.
It is apparent that a lot of information has been optimized out by the
compiler. But based on the signatures in #8 and #9, I'm guessing this
may have something to do with saving the state file.
I am using Ubuntu Eoan (19.10) on amd64 with kernel 5.3.0-24-lowlatency
#26-Ubuntu and libc6 2.30-0ubuntu2.
Yours truly,
--
Kip Warner -- Senior Software Engineer
OpenPGP signed/encrypted mail preferred
https://www.thevertigo.com
Attachment:
signature.asc
Description: This is a digitally signed message part