It appears this is not quite fixed yet, I managed to get a backtrace now:
(gdb) bt full #0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:32 No locals. #1 0x00007ffff556ee21 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(char const*) const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 No symbol table info available. #2 0x00007ffff7b4b1eb in operator==<char, std::char_traits<char>, std::allocator<char> > (this=0x7fffffffc310, Progress=<value optimised out>) at /usr/include/c++/4.6/bits/basic_string.h:2462 No locals. #3 pkgCacheGenerator::FinishCache (this=0x7fffffffc310, Progress=<value optimised out>) at pkgcachegen.cc:649 D = <incomplete type> A = {_M_current = 0x907978} Arch = 0x7fffe622e3c8 <Address 0x7fffe622e3c8 out of bounds> OldDepLast = 0x7fffea7c9a70 coInstall = false allPkg = <incomplete type> V = {<pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>> = {<std::iterator<std::forward_iterator_tag, pkgCache::Version, long, pkgCache::Version*, pkgCache::Version&>> = {<No data fields>}, _vptr.Iterator = 0x49d390, S = 0x7fffe90d9998, Owner = 0x7fffffffc3e8}, <No data fields>} PkgName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x16a02b8 "gromit"}} P = {<pkgCache::Iterator<pkgCache::Package, pkgCache::PkgIterator>> = {<std::iterator<std::forward_iterator_tag, pkgCache::Package, long, pkgCache::Package*, pkgCache::Package&>> = {<No data fields>}, _vptr.Iterator = 0x6bb090, S = 0x7fffe8daafb8, Owner = 0x7fffffffc3e8}, HashIndex = 0} G = {<pkgCache::Iterator<pkgCache::Group, pkgCache::GrpIterator>> = {<std::iterator<std::forward_iterator_tag, pkgCache::Group, long, pkgCache::Group*, pkgCache::Group&>> = {<No data fields>}, _vptr.Iterator = 0x7ffff7dd5ef0, S = 0x7fffe8d93204, Owner = 0x7fffffffc3e8}, HashIndex = 1646} archs = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = { _M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x907970, _M_finish = 0x907980, _M_end_of_storage = 0x907980}}, <No data fields>} #4 0x00007ffff7b4d239 in pkgCacheGenerator::MakeStatusCache ( List=<value optimised out>, Progress=0x8f6e50, OutMap=0x0, AllowMem=224) at pkgcachegen.cc:1291 Gen = {UniqHash = {0x7fffe88d43d8, 0x7fffe88d43b0, 0x0, 0x7fffe88d4408, 0x7fffe88d43c8, 0x7fffe88d4478, 0x0, 0x7fffe88d4498, 0x7fffe88d4ec0, 0x0, 0x7fffe88d43f0, 0x7fffe88d43f8, 0x7fffe88d4868, 0x7fffe88d43b8, 0x7fffe88d43d0, 0x7fffe88d4ec8, 0x7fffe88d4e78, 0x0, 0x7fffe88d4400, 0x7fffe88d44b8, 0x7fffe88d43a8, 0x7fffe88d4430, 0x7fffe88d43a0, 0x7fffe88d44a0, 0x7fffe88d4450, 0x7fffe88d4428}, Map = @0xc25db0, Cache = {_vptr.pkgCache = 0x7ffff7dd5eb0, CacheFile = { static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x6ba858 ""}}, Map = @0xc25db0, HeaderP = 0x7fffe88cb000, GrpP = 0x7fffe88cb000, PkgP = 0x7fffe88cb000, VerFileP = 0x7fffe88cb000, DescFileP = 0x7fffe88cb000, PkgFileP = 0x7fffe88cb000, VerP = 0x7fffe88cb000, DescP = 0x7fffe88cb000, ProvideP = 0x7fffe88cb000, DepP = 0x7fffe88cb000,
And it turns out that
(gdb) frame 3 #3 pkgCacheGenerator::FinishCache (this=0x7fffffffc310, Progress=<value optimised out>) at pkgcachegen.cc:649 649 if (Arch == 0 || *A == Arch) (gdb) print Arch $1 = 0x7fffe622e3c8 <Address 0x7fffe622e3c8 out of bounds>
is the problem.
It appears this is not quite fixed yet, I managed to get a backtrace now:
(gdb) bt full x86_64/ multiarch/ ../strlen. S:32 string< char, std::char_ traits< char>, std::allocator< char> >::compare(char const*) const () x86_64- linux-gnu/ libstdc+ +.so.6 traits< char>, std::allocator< char> > (this=0x7ffffff fc310, Progress=<value optimised out>) c++/4.6/ bits/basic_ string. h:2462 or::FinishCache (this=0x7ffffff fc310, :Iterator< pkgCache: :Version, pkgCache: :VerIterator> > = {<std:: iterator< std::forward_ iterator_ tag, pkgCache::Version, long, pkgCache::Version*, pkgCache: :Version& >> = {<No data fields>}, _vptr.Iterator = 0x49d390,
_M_dataplus = {<std:: allocator< char>> = {<__gnu_ cxx::new_ allocator< char>> = {<No data fields>}, <No data fields>}, _M_p = 0x16a02b8 "gromit"}} :Iterator< pkgCache: :Package, pkgCache: :PkgIterator> > = {<std:: iterator< std::forward_ iterator_ tag, pkgCache::Package, long, pkgCache::Package*, pkgCache: :Package& >> = {<No data fields>}, _vptr.Iterator = 0x6bb090, :Iterator< pkgCache: :Group, pkgCache: :GrpIterator> > = {<std:: iterator< std::forward_ iterator_ tag, pkgCache::Group, long, pkgCache::Group*, pkgCache::Group&>> = {<No data fields>}, _vptr.Iterator = 0x7ffff7dd5ef0, _Vector_ base<std: :basic_ string< char, std::char_ traits< char>, std::allocator< char> >, std::allocator< std::basic_ string< char, std::char_ traits< char>, std::allocator< char> > > >> = { allocator< std::basic_ string< char, std::char_ traits< char>, std::allocator< char> > >> = {<__gnu_ cxx::new_ allocator< std::basic_ string< char, std::char_ traits< char>, std::allocator< char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x907970, _M_finish = 0x907980,
_M_end_ of_storage = 0x907980}}, <No data fields>} or::MakeStatusC ache (
0x7fffe88d 4408, 0x7fffe88d43c8, 0x7fffe88d4478, 0x0,
0x7fffe88d 4498, 0x7fffe88d4ec0, 0x0, 0x7fffe88d43f0,
0x7fffe88d 43f8, 0x7fffe88d4868, 0x7fffe88d43b8, 0x7fffe88d43d0,
0x7fffe88d 4ec8, 0x7fffe88d4e78, 0x0, 0x7fffe88d4400,
0x7fffe88d 44b8, 0x7fffe88d43a8, 0x7fffe88d4430, 0x7fffe88d43a0,
0x7fffe88d 44a0, 0x7fffe88d4450, 0x7fffe88d4428}, Map = @0xc25db0,
static npos = <optimized out>,
_M_dataplus = {<std:: allocator< char>> = {<__gnu_ cxx::new_ allocator< char>> = {<No data fields>}, <No data fields>}, _M_p = 0x6ba858 ""}},
DescFileP = 0x7fffe88cb000, PkgFileP = 0x7fffe88cb000,
ProvideP = 0x7fffe88cb000, DepP = 0x7fffe88cb000,
#0 __strlen_sse2 () at ../sysdeps/
No locals.
#1 0x00007ffff556ee21 in std::basic_
from /usr/lib/
No symbol table info available.
#2 0x00007ffff7b4b1eb in operator==<char, std::char_
at /usr/include/
No locals.
#3 pkgCacheGenerat
Progress=<value optimised out>) at pkgcachegen.cc:649
D = <incomplete type>
A = {_M_current = 0x907978}
Arch = 0x7fffe622e3c8 <Address 0x7fffe622e3c8 out of bounds>
OldDepLast = 0x7fffea7c9a70
coInstall = false
allPkg = <incomplete type>
V = {<pkgCache:
S = 0x7fffe90d9998, Owner = 0x7fffffffc3e8}, <No data fields>}
PkgName = {static npos = <optimized out>,
P = {<pkgCache:
S = 0x7fffe8daafb8, Owner = 0x7fffffffc3e8}, HashIndex = 0}
G = {<pkgCache:
S = 0x7fffe8d93204, Owner = 0x7fffffffc3e8}, HashIndex = 1646}
archs = {<std::
_M_impl = {<std::
#4 0x00007ffff7b4d239 in pkgCacheGenerat
List=<value optimised out>, Progress=0x8f6e50, OutMap=0x0, AllowMem=224)
at pkgcachegen.cc:1291
Gen = {UniqHash = {0x7fffe88d43d8, 0x7fffe88d43b0, 0x0,
Cache = {_vptr.pkgCache = 0x7ffff7dd5eb0, CacheFile = {
Map = @0xc25db0, HeaderP = 0x7fffe88cb000, GrpP = 0x7fffe88cb000,
PkgP = 0x7fffe88cb000, VerFileP = 0x7fffe88cb000,
VerP = 0x7fffe88cb000, DescP = 0x7fffe88cb000,
And it turns out that
(gdb) frame 3 or::FinishCache (this=0x7ffffff fc310,
#3 pkgCacheGenerat
Progress=<value optimised out>) at pkgcachegen.cc:649
649 if (Arch == 0 || *A == Arch)
(gdb) print Arch
$1 = 0x7fffe622e3c8 <Address 0x7fffe622e3c8 out of bounds>
is the problem.