Comment 10 for bug 812862

Revision history for this message
Michael Vogt (mvo) wrote :

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.