[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#612986: apt: E: Method rred has died unexpectedly! E: Sub-process rred received a segmentation fault. [sparc, powerpc]



Axel Beckert hat am Sat 12. Feb, 04:34 (+0100) geschrieben:
> Package: apt
> Version: 0.8.11
> Severity: important
> 
> In Sid on the sparc and powerpc architectures I can no more update the
> package lists as apt-get update (as well as aptitude update and aptitude
> -u) fail with the following error messages.

Me (powerpc) has the same problem. The problem is that in rred.cc:258 an
incomplete object dyn is created, due to _error->PendingError() in
contrib/mmap.cc:223 returns true. The object has the attribute Base=0
which is feed to mmap in contrib/mmap.cc:270 on object destruction. This
call causes the segfault.

I don't know if Base == 0 is a valid state for a DynamicMMap object and
the destructor has to check this value or if there's something else
rotten and Base == 0 signals a deeper broken state.

More stuff after further research:

Executing _GetErrorObj()->DumpErrors() yields this message:

E: Couldn't make mmap of 2393964544 bytes - mmap (12: Cannot allocate memory)

The last 4 bytes of the patch are 0x8eb10000 == 2393964544:

% hd /var/lib/apt/lists/ftp.de.debian.org_debian_dists_unstable_main_source_Sources.ed |tail
00003800  10 35 1d 08 f9 c6 18 36  cd 29 1f 6a 15 be 45 c6  |.5.....6.).j..E.|
00003810  8d 01 50 c8 34 7a a7 a0  6c 02 b8 50 18 65 d9 73  |..P.4z..l..P.e.s|
00003820  37 50 ad 34 e7 68 7f 7c  7d 0a 18 51 52 11 75 ea  |7P.4.h.|}..QR.u.|
00003830  29 19 8c 31 64 14 43 f2  4a 00 94 2b 9e 78 09 f4  |)..1d.C.J..+.x..|
00003840  1a d4 0c ea d3 c1 6e 5d  07 17 b4 25 68 40 64 0d  |......n]...%h@d.|
00003850  8a f4 86 7a 52 32 7b c7  10 07 de c5 50 df b1 a9  |...zR2{.....P...|
00003860  ec 5c 1a c7 70 07 28 ad  9b 47 41 2b b7 71 ca 81  |.\..p.(..GA+.q..|
00003870  1c 58 c5 af 7a 6e 48 12  fe 0b 11 38 e6 a9 8e b1  |.X..znH....8....|
00003880  00 00                                             |..|
00003882

But

% zcat /var/lib/apt/lists/ftp.de.debian.org_debian_dists_unstable_main_source_Sources.ed |wc -c
45454
printf \%x\\n 45454
b18e

Hence, you have to do some edianess adoption

45454 == 0x0000b18e != 0x8eb10000 == 2393964544

Here's a backtrace when the SIGSEG happend:

#0  munmap () at ../sysdeps/unix/syscall-template.S:83
No locals.
#1  0x0fe51cb8 in DynamicMMap::~DynamicMMap (this=0xbf9c8354, __in_chrg=<value optimized out>) at contrib/mmap.cc:270
        EndOfFile = 273999192
#2  0x10002fdc in RredMethod::patchMMap (this=0xbf9c872c, Patch=..., From=..., out_file=..., hash=0xbf9c8520) at rred.cc:258
        mapSize = 2393964544
        dyn = {<MMap> = {_vptr.MMap = 0xffe7a28, Flags = 9, iSize = 0, Base = 0x0, SyncToFd = 0x0}, Fd = 0x0, WorkSpace = 2393964544, GrowFactor = 0, Limit = 0, Pools = 0xbf9c85e8, PoolCount = 4146}
        ed_cmds = {_vptr.MMap = 0xffe7a38, Flags = 9, iSize = 0, Base = 0x0, SyncToFd = 0x0}
        commands = 0xfdddb00
        command_alloc = 3214705392
        begin = 0x20000422 ""
        i = 0
        iov_size = 0
        amount = 0
        line = 0
        in_file = warning: can't find linker symbol for virtual table for `MMap' value
{_vptr.MMap = 0x4800ed6c, Flags = 266128560, iSize = 3214705456, Base = 0xbf9c8350, SyncToFd = 0xfe559ac}
        input = 0x0
        input_end = 0x0
        remaining = 0
        cmd = 0x0
        command_count = 0
        end = 0x0
        ed_end = 0x0
        iov = 0x0
#3  0x10003f64 in RredMethod::Fetch (this=0xbf9c872c, Itm=0x1054e518) at rred.cc:487
        Path = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e91c ""}}
        To = {_vptr.FileFd = 0x100174b8, iFd = 5, Flags = 21, FileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e824 ""}}, TemporaryFileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054c454 ""}}, gz = 0x0}
        Hash = {MD5 = {Buf = {1732584193, 4023233417, 2562383102, 271733878}, Bytes = "\000\000\000\000\000\000\000", In = "\263\205\r:\000\000\000\001H\003` \000\000\000\001\000\000\000\000H\003wp\277\234\206\030\017\336@\357H\002\037\360\277\234\205`\277\234\206\020H\000\264 \000\000\000\001\000\000\000\000\000\000\000\001H\003` ", Done = false}, SHA1 = {Buffer = "\017\233\242<H\003m`H\002\037\360\277\234\205\220\277\234\206@H\000\264 \000\000\000\001\000\000\000\000\000\000\000\001H\003` \377\377\377\377\000\000\000\000\017ܴ@H\003` \017\262\350x\017\262\350x", State = "gE#\001\357ͫ\211\230\272\334\376\020\062Tv\303\322\341", <incomplete sequence \360>, Count = "\000\000\000\000\000\000\000", Done = false}, SHA256 = {Sum = {count = {0, 0}, state = {1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225}, buf = '\000' <repeats 127 times>}, Done = false}}
        TimeBuf = {actime = 0, modtime = 0}
        Get = {Access = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e8a4 ""}}, User = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, Password = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, Host = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, Path = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e8bc ""}}, Port = 0}
        From = {_vptr.FileFd = 0x100174b8, iFd = 3, Flags = 1, FileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e91c ""}}, TemporaryFileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, gz = 0x0}
        Patch = {_vptr.FileFd = 0x100174b8, iFd = 4, Flags = 1, FileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e97c ""}}, TemporaryFileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, gz = 0x1054ea38}
        BufBase = {st_dev = 5188744839348686138, __pad1 = 49052, st_ino = 1208004652, st_mode = 1208180768, st_nlink = 0, st_uid = 0, st_gid = 1, st_rdev = 5653385148272, __pad2 = 18435, st_size = 266223855, st_blksize = 261876284, st_blocks = 266114544, st_atim = {tv_sec = 1, tv_nsec = 1208004652}, st_mtim = {tv_sec = 6, tv_nsec = 0}, st_ctim = {tv_sec = 0, tv_nsec = 1}, __unused4 = 681, __unused5 = 0}
        Res = {MD5Sum = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, SHA1Sum = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, SHA256Sum = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, GPGVOutput = {<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 = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, LastModified = 0, IMSHit = false, Filename = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e824 ""}}, Size = 0, ResumePoint = 0}
        result = 1208098800
        BufPatch = {st_dev = 13807057033437656985, __pad1 = 18434, st_ino = 3214705792, st_mode = 3214705968, st_nlink = 1208005664, st_uid = 1, st_gid = 0, st_rdev = 5503151456, __pad2 = 65535, st_size = 0, st_blksize = -1080261424, st_blocks = 1208184160, st_atim = {tv_sec = -1080261416, tv_nsec = -1866355779}, st_mtim = {tv_sec = -1080261424, tv_nsec = 1208004652}, st_ctim = {tv_sec = 1208180768, tv_nsec = 0}, __unused4 = 10, __unused5 = 3214706048}
#4  0x0fecbd28 in pkgAcqMethod::Run (this=0xbf9c872c, Single=false) at acquire-method.cc:395
        Tmp = 0x1054e518
        I = 0xbf9c873c
        Message = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054a554 ""}}
        End = 0x1054a557 ""
        Number = 600
#5  0x1000463c in main (argc=1, argv=0xbf9c89d4) at rred.cc:568
        Mth = {<pkgAcqMethod> = {_vptr.pkgAcqMethod = 0x100064e0, Messages = {<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 = 0x1054a640, _M_finish = 0x1054a640, _M_end_of_storage = 0x1054a648}}, <No data fields>}, Queue = 0x1054e518, QueueBack = 0x1054e518, FailReason = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, UsedMirror = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, IP = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}}, Debug = false, static BUF_SIZE = 1024}

And this was my gdb session:

% gdb /usr/lib/apt/methods/rred.orig 
GNU gdb (GDB) 7.2-debian
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
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 "powerpc-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/lib/apt/methods/rred.orig...done.
(gdb) target re
record       record-core  remote       
(gdb) target remote 
To open a remote debug connection, you need to specify what
serial device is attached to the remote system
(e.g. /dev/ttyS0, /dev/ttya, COM1, etc.).
(gdb) target remote localhost:4432
localhost:4432: Die Wartezeit für die Verbindung ist abgelaufen.
(gdb) target remote localhost:4432
localhost:4432: Die Wartezeit für die Verbindung ist abgelaufen.
(gdb) set remotetimeout 120
(gdb) target remote localhost:4432
localhost:4432: Die Wartezeit für die Verbindung ist abgelaufen.
(gdb) set remotetimeout 240
(gdb) target remote localhost:4432
Remote debugging using localhost:4432
Reading symbols from /lib/ld.so.1...Reading symbols from /usr/lib/debug/lib/ld-2.11.2.so...done.
done.
Loaded symbols for /lib/ld.so.1
_start () at ../sysdeps/powerpc/powerpc32/dl-start.S:33
33      ../sysdeps/powerpc/powerpc32/dl-start.S: Datei oder Verzeichnis nicht gefunden.
        in ../sysdeps/powerpc/powerpc32/dl-start.S
(gdb) b rred.cc:258
Breakpoint 1 at 0x10002f54: file rred.cc, line 258.
(gdb) cont
Continuing.
Remote connection closed
(gdb) bt
No stack.
(gdb) target remote localhost:4432
Remote debugging using localhost:4432
Reading symbols from /lib/ld.so.1...Reading symbols from /usr/lib/debug/lib/ld-2.11.2.so...done.
done.
Loaded symbols for /lib/ld.so.1
_start () at ../sysdeps/powerpc/powerpc32/dl-start.S:33
33      ../sysdeps/powerpc/powerpc32/dl-start.S: Datei oder Verzeichnis nicht gefunden.
        in ../sysdeps/powerpc/powerpc32/dl-start.S
(gdb) b rred.cc:258
Note: breakpoint 1 also set at pc 0x10002f54.
Breakpoint 2 at 0x10002f54: file rred.cc, line 258.
(gdb) cont
Continuing.

Breakpoint 1, RredMethod::patchMMap (this=0xbf9c872c, Patch=..., From=..., out_file=..., hash=0xbf9c8520)
    at rred.cc:258
258                     DynamicMMap dyn(0, mapSize, 0);
(gdb) bt
#0  RredMethod::patchMMap (this=0xbf9c872c, Patch=..., From=..., out_file=..., hash=0xbf9c8520) at rred.cc:258
#1  0x10003f64 in RredMethod::Fetch (this=0xbf9c872c, Itm=0x1054e518) at rred.cc:487
#2  0x0fecbd28 in pkgAcqMethod::Run (this=0xbf9c872c, Single=false) at acquire-method.cc:395
#3  0x1000463c in main (argc=1, argv=0xbf9c89d4) at rred.cc:568
(gdb) bt full
#0  RredMethod::patchMMap (this=0xbf9c872c, Patch=..., From=..., out_file=..., hash=0xbf9c8520) at rred.cc:258
        mapSize = 2393964544
        dyn = warning: can't find linker symbol for virtual table for `DynamicMMap' value
{<MMap> = {_vptr.MMap = 0x48015860, Flags = 1073742882, iSize = 120, Base = 0xbf9c85e8, 
            SyncToFd = 0x14}, Fd = 0x20000422, WorkSpace = 0, GrowFactor = 3214705552, Limit = 33607730, 
          Pools = 0xbf9c85e8, PoolCount = 4146}
        ed_cmds = {_vptr.MMap = 0xffe7a38, Flags = 4, iSize = 2393964544, Base = 0xffffffff, SyncToFd = 0x0}
        commands = 0xfdddb00
        command_alloc = 3214705392
        begin = 0x20000422 <Address 0x20000422 out of bounds>
        i = 0
        iov_size = 0
        amount = 0
        line = 0
        in_file = warning: can't find linker symbol for virtual table for `MMap' value
{_vptr.MMap = 0x4800ed6c, Flags = 266128560, iSize = 3214705456, Base = 0xbf9c8350, 
          SyncToFd = 0xfe559ac}
        input = 0x0
        input_end = 0x0
        remaining = 0
        cmd = 0x0
        command_count = 0
        end = 0x0
        ed_end = 0x0
        iov = 0x0
#1  0x10003f64 in RredMethod::Fetch (this=0xbf9c872c, Itm=0x1054e518) at rred.cc:487
        Path = {static npos = <optimized out>, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e91c "/var/lib/apt/lists/ftp.de.debian.org_debian_dists_unstable_main_source_Sources"}}
        To = {_vptr.FileFd = 0x100174b8, iFd = 5, Flags = 21, FileName = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
              _M_p = 0x1054e824 "/var/lib/apt/lists/partial/ftp.de.debian.org_debian_dists_unstable_main_source_Sources.diff_2011-02-11-2016.59"}}, TemporaryFileName = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
              _M_p = 0x1054c454 "/var/lib/apt/lists/partial/ftp.de.debian.org_debian_dists_unstable_main_source_Sources.diff_2011-02-11-2016.59.zmerXv"}}, gz = 0x0}
        Hash = {MD5 = {Buf = {1732584193, 4023233417, 2562383102, 271733878}, 
            Bytes = "\000\000\000\000\000\000\000", 
---Type <return> to continue, or q <return> to quit---
            In = "\263\205\r:\000\000\000\001H\003` \000\000\000\001\000\000\000\000H\003wp\277\234\206\030\017\336@\357H\002\037\360\277\234\205`\277\234\206\020H\000\264 \000\000\000\001\000\000\000\000\000\000\000\001H\003` ", Done = false}, SHA1 = {
            Buffer = "\017\233\242<H\003m`H\002\037\360\277\234\205\220\277\234\206@H\000\264 \000\000\000\001\000\000\000\000\000\000\000\001H\003` \377\377\377\377\000\000\000\000\017ܴ@H\003` \017\262\350x\017\262\350x", 
            State = "gE#\001\357ͫ\211\230\272\334\376\020\062Tv\303\322\341", <incomplete sequence \360>, 
            Count = "\000\000\000\000\000\000\000", Done = false}, SHA256 = {Sum = {count = {0, 0}, state = {
                1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225}, 
              buf = '\000' <repeats 127 times>}, Done = false}}
        TimeBuf = {actime = 0, modtime = 0}
        Get = {Access = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e8a4 "rred"}}, User = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, Password = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, Host = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, Path = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
              _M_p = 0x1054e8bc "/var/lib/apt/lists/ftp.de.debian.org_debian_dists_unstable_main_source_Sources"}}, Port = 0}
        From = {_vptr.FileFd = 0x100174b8, iFd = 3, Flags = 1, FileName = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
              _M_p = 0x1054e91c "/var/lib/apt/lists/ftp.de.debian.org_debian_dists_unstable_main_source_Sources"}}, TemporaryFileName = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, gz = 0x0}
        Patch = {_vptr.FileFd = 0x100174b8, iFd = 4, Flags = 1, FileName = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
              _M_p = 0x1054e97c "/var/lib/apt/lists/ftp.de.debian.org_debian_dists_unstable_main_source_Sources.ed"}}, TemporaryFileName = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, gz = 0x1054ea38}
        BufBase = {st_dev = 5188744839348686138, __pad1 = 49052, st_ino = 1208004652, st_mode = 1208180768, 
---Type <return> to continue, or q <return> to quit---
          st_nlink = 0, st_uid = 0, st_gid = 1, st_rdev = 5653385148272, __pad2 = 18435, st_size = 266223855, 
          st_blksize = 261876284, st_blocks = 266114544, st_atim = {tv_sec = 1, tv_nsec = 1208004652}, 
          st_mtim = {tv_sec = 6, tv_nsec = 0}, st_ctim = {tv_sec = 0, tv_nsec = 1}, __unused4 = 681, 
          __unused5 = 0}
        Res = {MD5Sum = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, SHA1Sum = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, SHA256Sum = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, 
          GPGVOutput = {<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 = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, 
          LastModified = 0, IMSHit = false, Filename = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
              _M_p = 0x1054e824 "/var/lib/apt/lists/partial/ftp.de.debian.org_debian_dists_unstable_main_source_Sources.diff_2011-02-11-2016.59"}}, Size = 0, ResumePoint = 0}
        result = 1208098800
        BufPatch = {st_dev = 13807057033437656985, __pad1 = 18434, st_ino = 3214705792, st_mode = 3214705968, 
          st_nlink = 1208005664, st_uid = 1, st_gid = 0, st_rdev = 5503151456, __pad2 = 65535, st_size = 0, 
          st_blksize = -1080261424, st_blocks = 1208184160, st_atim = {tv_sec = -1080261416, 
            tv_nsec = -1866355779}, st_mtim = {tv_sec = -1080261424, tv_nsec = 1208004652}, st_ctim = {
            tv_sec = 1208180768, tv_nsec = 0}, __unused4 = 10, __unused5 = 3214706048}
#2  0x0fecbd28 in pkgAcqMethod::Run (this=0xbf9c872c, Single=false) at acquire-method.cc:395
        Tmp = 0x1054e518
        I = 0xbf9c873c
        Message = {static npos = <optimized out>, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x1054a554 "600 URI Acquire\nURI: rred:/var/lib/apt/lists/ftp.de.debian.org_debian_dists_unstable_main_source_Sources\nFilename: /var/lib/apt/lists/partial/ftp.de.debian.org_debian_dists_unstable_main_source_Source"...}}
        End = 0x1054a557 " URI Acquire\nURI: rred:/var/lib/apt/lists/ftp.de.debian.org_debian_dists_unstable_main_source_Sources\nFilename: /var/lib/apt/lists/partial/ftp.de.debian.org_debian_dists_unstable_main_source_Sources---Type <return> to continue, or q <return> to quit---
.d"...
        Number = 600
#3  0x1000463c in main (argc=1, argv=0xbf9c89d4) at rred.cc:568
        Mth = {<pkgAcqMethod> = {_vptr.pkgAcqMethod = 0x100064e0, 
            Messages = {<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 = 0x1054a640, _M_finish = 0x1054a640, 
                  _M_end_of_storage = 0x1054a648}}, <No data fields>}, Queue = 0x1054e518, 
            QueueBack = 0x1054e518, FailReason = {static npos = <optimized out>, 
              _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, UsedMirror = {static npos = <optimized out>, 
              _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, IP = {static npos = <optimized out>, 
              _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}}, Debug = false, static BUF_SIZE = 1024}
(gdb) step
DynamicMMap::DynamicMMap (this=0xbf9c8354, Flags=0, WorkSpace=@0xbf9c8338, Grow=@0xbf9c830c, Limit=@0xbf9c8308)
    at contrib/mmap.cc:221
221                     GrowFactor(Grow), Limit(Limit)
(gdb) bt
#0  DynamicMMap::DynamicMMap (this=0xbf9c8354, Flags=0, WorkSpace=@0xbf9c8338, Grow=@0xbf9c830c, 
    Limit=@0xbf9c8308) at contrib/mmap.cc:221
#1  0x10002f8c in RredMethod::patchMMap (this=0xbf9c872c, Patch=..., From=..., out_file=..., hash=0xbf9c8520)
    at rred.cc:258
#2  0x10003f64 in RredMethod::Fetch (this=0xbf9c872c, Itm=0x1054e518) at rred.cc:487
#3  0x0fecbd28 in pkgAcqMethod::Run (this=0xbf9c872c, Single=false) at acquire-method.cc:395
#4  0x1000463c in main (argc=1, argv=0xbf9c89d4) at rred.cc:568
(gdb) cont
Continuing.

Program received signal SIGSEGV, Segmentation fault.
Cannot remove breakpoints because program is no longer writable.
Further execution is probably impossible.
munmap () at ../sysdeps/unix/syscall-template.S:83
83      ../sysdeps/unix/syscall-template.S: Datei oder Verzeichnis nicht gefunden.
        in ../sysdeps/unix/syscall-template.S
(gdb) bt
#0  munmap () at ../sysdeps/unix/syscall-template.S:83
#1  0x0fe51cb8 in DynamicMMap::~DynamicMMap (this=0xbf9c8354, __in_chrg=<value optimized out>)
    at contrib/mmap.cc:270
#2  0x10002fdc in RredMethod::patchMMap (this=0xbf9c872c, Patch=..., From=..., out_file=..., hash=0xbf9c8520)
    at rred.cc:258
#3  0x10003f64 in RredMethod::Fetch (this=0xbf9c872c, Itm=0x1054e518) at rred.cc:487
#4  0x0fecbd28 in pkgAcqMethod::Run (this=0xbf9c872c, Single=false) at acquire-method.cc:395
#5  0x1000463c in main (argc=1, argv=0xbf9c89d4) at rred.cc:568
(gdb) bt full
#0  munmap () at ../sysdeps/unix/syscall-template.S:83
No locals.
#1  0x0fe51cb8 in DynamicMMap::~DynamicMMap (this=0xbf9c8354, __in_chrg=<value optimized out>)
    at contrib/mmap.cc:270
        EndOfFile = 273999192
#2  0x10002fdc in RredMethod::patchMMap (this=0xbf9c872c, Patch=..., From=..., out_file=..., hash=0xbf9c8520)
    at rred.cc:258
        mapSize = 2393964544
        dyn = {<MMap> = {_vptr.MMap = 0xffe7a28, Flags = 9, iSize = 0, Base = 0x0, SyncToFd = 0x0}, Fd = 0x0, 
          WorkSpace = 2393964544, GrowFactor = 0, Limit = 0, Pools = 0xbf9c85e8, PoolCount = 4146}
        ed_cmds = {_vptr.MMap = 0xffe7a38, Flags = 9, iSize = 0, Base = 0x0, SyncToFd = 0x0}
        commands = 0xfdddb00
        command_alloc = 3214705392
        begin = 0x20000422 ""
        i = 0
        iov_size = 0
        amount = 0
        line = 0
        in_file = warning: can't find linker symbol for virtual table for `MMap' value
{_vptr.MMap = 0x4800ed6c, Flags = 266128560, iSize = 3214705456, Base = 0xbf9c8350, 
          SyncToFd = 0xfe559ac}
        input = 0x0
        input_end = 0x0
        remaining = 0
        cmd = 0x0
        command_count = 0
        end = 0x0
        ed_end = 0x0
        iov = 0x0
#3  0x10003f64 in RredMethod::Fetch (this=0xbf9c872c, Itm=0x1054e518) at rred.cc:487
        Path = {static npos = <optimized out>, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e91c ""}}
        To = {_vptr.FileFd = 0x100174b8, iFd = 5, Flags = 21, FileName = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e824 ""}}, TemporaryFileName = {static npos = <optimized out>, 
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054c454 ""}}, gz = 0x0}
        Hash = {MD5 = {Buf = {1732584193, 4023233417, 2562383102, 271733878}, 
---Type <return> to continue, or q <return> to quit---q
Bytes = "\000\000\000\000\000\000\0Quit
(gdb) set pagination off 
(gdb) bt full
#0  munmap () at ../sysdeps/unix/syscall-template.S:83
No locals.
#1  0x0fe51cb8 in DynamicMMap::~DynamicMMap (this=0xbf9c8354, __in_chrg=<value optimized out>) at contrib/mmap.cc:270
        EndOfFile = 273999192
#2  0x10002fdc in RredMethod::patchMMap (this=0xbf9c872c, Patch=..., From=..., out_file=..., hash=0xbf9c8520) at rred.cc:258
        mapSize = 2393964544
        dyn = {<MMap> = {_vptr.MMap = 0xffe7a28, Flags = 9, iSize = 0, Base = 0x0, SyncToFd = 0x0}, Fd = 0x0, WorkSpace = 2393964544, GrowFactor = 0, Limit = 0, Pools = 0xbf9c85e8, PoolCount = 4146}
        ed_cmds = {_vptr.MMap = 0xffe7a38, Flags = 9, iSize = 0, Base = 0x0, SyncToFd = 0x0}
        commands = 0xfdddb00
        command_alloc = 3214705392
        begin = 0x20000422 ""
        i = 0
        iov_size = 0
        amount = 0
        line = 0
        in_file = warning: can't find linker symbol for virtual table for `MMap' value
{_vptr.MMap = 0x4800ed6c, Flags = 266128560, iSize = 3214705456, Base = 0xbf9c8350, SyncToFd = 0xfe559ac}
        input = 0x0
        input_end = 0x0
        remaining = 0
        cmd = 0x0
        command_count = 0
        end = 0x0
        ed_end = 0x0
        iov = 0x0
#3  0x10003f64 in RredMethod::Fetch (this=0xbf9c872c, Itm=0x1054e518) at rred.cc:487
        Path = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e91c ""}}
        To = {_vptr.FileFd = 0x100174b8, iFd = 5, Flags = 21, FileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e824 ""}}, TemporaryFileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054c454 ""}}, gz = 0x0}
        Hash = {MD5 = {Buf = {1732584193, 4023233417, 2562383102, 271733878}, Bytes = "\000\000\000\000\000\000\000", In = "\263\205\r:\000\000\000\001H\003` \000\000\000\001\000\000\000\000H\003wp\277\234\206\030\017\336@\357H\002\037\360\277\234\205`\277\234\206\020H\000\264 \000\000\000\001\000\000\000\000\000\000\000\001H\003` ", Done = false}, SHA1 = {Buffer = "\017\233\242<H\003m`H\002\037\360\277\234\205\220\277\234\206@H\000\264 \000\000\000\001\000\000\000\000\000\000\000\001H\003` \377\377\377\377\000\000\000\000\017ܴ@H\003` \017\262\350x\017\262\350x", State = "gE#\001\357ͫ\211\230\272\334\376\020\062Tv\303\322\341", <incomplete sequence \360>, Count = "\000\000\000\000\000\000\000", Done = false}, SHA256 = {Sum = {count = {0, 0}, state = {1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225}, buf = '\000' <repeats 127 times>}, Done = false}}
        TimeBuf = {actime = 0, modtime = 0}
        Get = {Access = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e8a4 ""}}, User = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, Password = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, Host = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, Path = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e8bc ""}}, Port = 0}
        From = {_vptr.FileFd = 0x100174b8, iFd = 3, Flags = 1, FileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e91c ""}}, TemporaryFileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, gz = 0x0}
        Patch = {_vptr.FileFd = 0x100174b8, iFd = 4, Flags = 1, FileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e97c ""}}, TemporaryFileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, gz = 0x1054ea38}
        BufBase = {st_dev = 5188744839348686138, __pad1 = 49052, st_ino = 1208004652, st_mode = 1208180768, st_nlink = 0, st_uid = 0, st_gid = 1, st_rdev = 5653385148272, __pad2 = 18435, st_size = 266223855, st_blksize = 261876284, st_blocks = 266114544, st_atim = {tv_sec = 1, tv_nsec = 1208004652}, st_mtim = {tv_sec = 6, tv_nsec = 0}, st_ctim = {tv_sec = 0, tv_nsec = 1}, __unused4 = 681, __unused5 = 0}
        Res = {MD5Sum = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, SHA1Sum = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, SHA256Sum = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, GPGVOutput = {<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 = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, LastModified = 0, IMSHit = false, Filename = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e824 ""}}, Size = 0, ResumePoint = 0}
        result = 1208098800
        BufPatch = {st_dev = 13807057033437656985, __pad1 = 18434, st_ino = 3214705792, st_mode = 3214705968, st_nlink = 1208005664, st_uid = 1, st_gid = 0, st_rdev = 5503151456, __pad2 = 65535, st_size = 0, st_blksize = -1080261424, st_blocks = 1208184160, st_atim = {tv_sec = -1080261416, tv_nsec = -1866355779}, st_mtim = {tv_sec = -1080261424, tv_nsec = 1208004652}, st_ctim = {tv_sec = 1208180768, tv_nsec = 0}, __unused4 = 10, __unused5 = 3214706048}
#4  0x0fecbd28 in pkgAcqMethod::Run (this=0xbf9c872c, Single=false) at acquire-method.cc:395
        Tmp = 0x1054e518
        I = 0xbf9c873c
        Message = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054a554 ""}}
        End = 0x1054a557 ""
        Number = 600
#5  0x1000463c in main (argc=1, argv=0xbf9c89d4) at rred.cc:568
        Mth = {<pkgAcqMethod> = {_vptr.pkgAcqMethod = 0x100064e0, Messages = {<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 = 0x1054a640, _M_finish = 0x1054a640, _M_end_of_storage = 0x1054a648}}, <No data fields>}, Queue = 0x1054e518, QueueBack = 0x1054e518, FailReason = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, UsedMirror = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, IP = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}}, Debug = false, static BUF_SIZE = 1024}
(gdb) up
#1  0x0fe51cb8 in DynamicMMap::~DynamicMMap (this=0xbf9c8354, __in_chrg=<value optimized out>) at contrib/mmap.cc:270
270           munmap(Base, WorkSpace);
(gdb) frame 1
#1  0x0fe51cb8 in DynamicMMap::~DynamicMMap (this=0xbf9c8354, __in_chrg=<value optimized out>) at contrib/mmap.cc:270
270           munmap(Base, WorkSpace);
(gdb) frame 2
#2  0x10002fdc in RredMethod::patchMMap (this=0xbf9c872c, Patch=..., From=..., out_file=..., hash=0xbf9c8520) at rred.cc:258
258                     DynamicMMap dyn(0, mapSize, 0);
(gdb) list
253                                             FileFd &out_file, Hashes *hash) const {
254     #ifdef _POSIX_MAPPED_FILES
255             MMap ed_cmds(Patch, MMap::ReadOnly);
256             if (Patch.gzFd() != NULL) {
257                     unsigned long mapSize = Patch.Size();
258                     DynamicMMap dyn(0, mapSize, 0);
259                     gzread(Patch.gzFd(), dyn.Data(), mapSize);
260                     ed_cmds = dyn;
261             }
262             MMap in_file(From, MMap::ReadOnly);
(gdb) print mapSize 
$1 = 2393964544
(gdb) print Patch
$2 = (FileFd &) @0xbf9c840c: {_vptr.FileFd = 0x100174b8, iFd = 4, Flags = 1, FileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1054e97c ""}}, TemporaryFileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, gz = 0x1054ea38}
(gdb) print Patch.Size()

Program received signal SIGILL, Illegal instruction.
FileFd::Size (this=0x20000422) at contrib/fileutl.cc:951
951     {
The program being debugged was signaled while in a function called from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on".
Evaluation of the expression containing the function
(FileFd::Size()) will be abandoned.
When the function is done executing, GDB will silently stop.
(gdb) cont
Continuing.

Program terminated with signal SIGILL, Illegal instruction.
The program no longer exists.
(gdb) frame 1
No registers.
(gdb) target remote localhost:4432; cont
Remote debugging using localhost:4432; cont
Reading symbols from /lib/ld.so.1...Reading symbols from /usr/lib/debug/lib/ld-2.11.2.so...done.
done.
Loaded symbols for /lib/ld.so.1
_start () at ../sysdeps/powerpc/powerpc32/dl-start.S:33
33      ../sysdeps/powerpc/powerpc32/dl-start.S: Datei oder Verzeichnis nicht gefunden.
        in ../sysdeps/powerpc/powerpc32/dl-start.S
(gdb) cont
Continuing.
Remote connection closed
(gdb) target remote localhost:4432
Remote debugging using localhost:4432
Reading symbols from /lib/ld.so.1...Reading symbols from /usr/lib/debug/lib/ld-2.11.2.so...done.
done.
Loaded symbols for /lib/ld.so.1
_start () at ../sysdeps/powerpc/powerpc32/dl-start.S:33
33      ../sysdeps/powerpc/powerpc32/dl-start.S: Datei oder Verzeichnis nicht gefunden.
        in ../sysdeps/powerpc/powerpc32/dl-start.S
(gdb) cont
Continuing.

Breakpoint 1, RredMethod::patchMMap (this=0xbfc455ec, Patch=..., From=..., out_file=..., hash=0xbfc453e0) at rred.cc:258
258                     DynamicMMap dyn(0, mapSize, 0);
(gdb) p mapSize
$3 = 2393964544
(gdb) step
DynamicMMap::DynamicMMap (this=0xbfc45214, Flags=0, WorkSpace=@0xbfc451f8, Grow=@0xbfc451cc, Limit=@0xbfc451c8) at contrib/mmap.cc:221
221                     GrowFactor(Grow), Limit(Limit)
(gdb) list
216        cooler than the fallback solution to simply allocate a char array
217        and could come in handy later than we are able to grow such an mmap */
218     DynamicMMap::DynamicMMap(unsigned long Flags,unsigned long const &WorkSpace,
219                              unsigned long const &Grow, unsigned long const &Limit) :
220                     MMap(Flags | NoImmMap | UnMapped), Fd(0), WorkSpace(WorkSpace),
221                     GrowFactor(Grow), Limit(Limit)
222     {
223             if (_error->PendingError() == true)
224                     return;
225
(gdb) n
223             if (_error->PendingError() == true)
(gdb) 
224                     return;
(gdb) print _error
No symbol "_error" in current context.
(gdb) n
260     }
(gdb) 
RredMethod::patchMMap (this=0xbfc455ec, Patch=..., From=..., out_file=..., hash=0xbfc453e0) at rred.cc:259
259                     gzread(Patch.gzFd(), dyn.Data(), mapSize);
(gdb) n
260                     ed_cmds = dyn;
(gdb) l
255             MMap ed_cmds(Patch, MMap::ReadOnly);
256             if (Patch.gzFd() != NULL) {
257                     unsigned long mapSize = Patch.Size();
258                     DynamicMMap dyn(0, mapSize, 0);
259                     gzread(Patch.gzFd(), dyn.Data(), mapSize);
260                     ed_cmds = dyn;
261             }
262             MMap in_file(From, MMap::ReadOnly);
263
264             if (ed_cmds.Size() == 0 || in_file.Size() == 0)
(gdb) step
MMap::operator= (this=0xbfc451d0) at ../build/include/apt-pkg/mmap.h:39
39      class MMap
(gdb) 
RredMethod::patchMMap (this=0xbfc455ec, Patch=..., From=..., out_file=..., hash=0xbfc453e0) at rred.cc:258
258                     DynamicMMap dyn(0, mapSize, 0);
(gdb) 
DynamicMMap::~DynamicMMap (this=0xbfc45214, __in_chrg=<value optimized out>) at contrib/mmap.cc:265
265     DynamicMMap::~DynamicMMap()
(gdb) 
267        if (Fd == 0)
(gdb) l
262     // DynamicMMap::~DynamicMMap - Destructor                               /*{{{*/
263     // ---------------------------------------------------------------------
264     /* We truncate the file to the size of the memory data set */
265     DynamicMMap::~DynamicMMap()
266     {
267        if (Fd == 0)
268        {
269     #ifdef _POSIX_MAPPED_FILES
270           munmap(Base, WorkSpace);
271     #else
(gdb) p Fd
$4 = (FileFd *) 0x0
(gdb) p Base
$5 = (void *) 0x0
(gdb) n
270           munmap(Base, WorkSpace);
(gdb) p WorkSpace 
$6 = 2393964544
(gdb) bt
#0  DynamicMMap::~DynamicMMap (this=0xbfc45214, __in_chrg=<value optimized out>) at contrib/mmap.cc:270
#1  0x10002fdc in RredMethod::patchMMap (this=0xbfc455ec, Patch=..., From=..., out_file=..., hash=0xbfc453e0) at rred.cc:258
#2  0x10003f64 in RredMethod::Fetch (this=0xbfc455ec, Itm=0x10680518) at rred.cc:487
#3  0x0fecbd28 in pkgAcqMethod::Run (this=0xbfc455ec, Single=false) at acquire-method.cc:395
#4  0x1000463c in main (argc=1, argv=0xbfc45894) at rred.cc:568
(gdb) cont
Continuing.

Program received signal SIGSEGV, Segmentation fault.
Cannot remove breakpoints because program is no longer writable.
Further execution is probably impossible.
munmap () at ../sysdeps/unix/syscall-template.S:83
83      ../sysdeps/unix/syscall-template.S: Datei oder Verzeichnis nicht gefunden.
        in ../sysdeps/unix/syscall-template.S
(gdb) bt
#0  munmap () at ../sysdeps/unix/syscall-template.S:83
#1  0x0fe51cb8 in DynamicMMap::~DynamicMMap (this=0xbfc45214, __in_chrg=<value optimized out>) at contrib/mmap.cc:270
#2  0x10002fdc in RredMethod::patchMMap (this=0xbfc455ec, Patch=..., From=..., out_file=..., hash=0xbfc453e0) at rred.cc:258
#3  0x10003f64 in RredMethod::Fetch (this=0xbfc455ec, Itm=0x10680518) at rred.cc:487
#4  0x0fecbd28 in pkgAcqMethod::Run (this=0xbfc455ec, Single=false) at acquire-method.cc:395
#5  0x1000463c in main (argc=1, argv=0xbfc45894) at rred.cc:568
(gdb) cont
Continuing.

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb) core-file /var/tmp/Körnerhaufen.rred.
Körnerhaufen.rred.1297470035       Körnerhaufen.rred.1297509658       Körnerhaufen.rred.orig.1297520685
Körnerhaufen.rred.1297470123       Körnerhaufen.rred.1297519241       Körnerhaufen.rred.orig.1297521862
(gdb) core-file /var/tmp/Körnerhaufen.rred.1297521862
/var/tmp/Körnerhaufen.rred.1297521862: Datei oder Verzeichnis nicht gefunden.
(gdb) core-file /var/tmp/Körnerhaufen.rred.1297
Körnerhaufen.rred.1297470035  Körnerhaufen.rred.1297509658  
Körnerhaufen.rred.1297470123  Körnerhaufen.rred.1297519241  
(gdb) core-file /var/tmp/Körnerhaufen.rred.12975
Körnerhaufen.rred.1297509658  Körnerhaufen.rred.1297519241  
(gdb) core-file /var/tmp/Körnerhaufen.rred.orig.129752
Körnerhaufen.rred.orig.1297520685  Körnerhaufen.rred.orig.1297521862  
(gdb) core-file /var/tmp/Körnerhaufen.rred.orig.1297521862
[New Thread 15377]
Reading symbols from /lib/ld.so.1...Reading symbols from /usr/lib/debug/lib/ld-2.11.2.so...done.
done.
Loaded symbols for /lib/ld.so.1
Failed to read a valid object file image from memory.
Core was generated by `/usr/lib/apt/methods/rred.orig'.
Program terminated with signal 11, Segmentation fault.
#0  0x0fa9b0cc in ?? ()
(gdb) bt
#0  0x0fa9b0cc in ?? ()
#1  0x0fe51cb8 in ?? ()
#2  0x10002fdc in RredMethod::patchMMap (this=0x9, Patch=..., From=..., out_file=..., hash=0x0) at rred.cc:258
#3  0x10680a20 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) target remote localhost:4432
Remote debugging using localhost:4432
Reading symbols from /lib/ld.so.1...Reading symbols from /usr/lib/debug/lib/ld-2.11.2.so...done.
done.
Loaded symbols for /lib/ld.so.1
_start () at ../sysdeps/powerpc/powerpc32/dl-start.S:33
33      ../sysdeps/powerpc/powerpc32/dl-start.S: Datei oder Verzeichnis nicht gefunden.
        in ../sysdeps/powerpc/powerpc32/dl-start.S
(gdb) cont
Continuing.
Remote connection closed
(gdb) target remote localhost:4432
Remote debugging using localhost:4432
Reading symbols from /lib/ld.so.1...Reading symbols from /usr/lib/debug/lib/ld-2.11.2.so...done.
done.
Loaded symbols for /lib/ld.so.1
_start () at ../sysdeps/powerpc/powerpc32/dl-start.S:33
33      ../sysdeps/powerpc/powerpc32/dl-start.S: Datei oder Verzeichnis nicht gefunden.
        in ../sysdeps/powerpc/powerpc32/dl-start.S
(gdb) b rred.cc:258
Note: breakpoints 1 and 2 also set at pc 0x10002f54.
Breakpoint 3 at 0x10002f54: file rred.cc, line 258.
(gdb) b
Breakpoint 4 at 0x480176b4: file ../sysdeps/powerpc/powerpc32/dl-start.S, line 33.
(gdb) inf br
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x10002f54 in RredMethod::patchMMap(FileFd&, FileFd&, FileFd&, Hashes*) const at rred.cc:258
        breakpoint already hit 2 times
2       breakpoint     keep y   0x10002f54 in RredMethod::patchMMap(FileFd&, FileFd&, FileFd&, Hashes*) const at rred.cc:258
        breakpoint already hit 2 times
3       breakpoint     keep y   0x10002f54 in RredMethod::patchMMap(FileFd&, FileFd&, FileFd&, Hashes*) const at rred.cc:258
4       breakpoint     keep y   0x480176b4 ../sysdeps/powerpc/powerpc32/dl-start.S:33
(gdb) delete b 4
Ambiguous delete command "b 4": bookmark, breakpoints.
(gdb) delete bre 4
(gdb) delete bre 3
(gdb) delete bre 2
(gdb) b contrib/mmap.cc:223
No source file named contrib/mmap.cc.
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) b mmap.cc:223
No source file named mmap.cc.
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) cont
Continuing.

Breakpoint 1, RredMethod::patchMMap (this=0xbfc75dcc, Patch=..., From=..., out_file=..., hash=0xbfc75bc0) at rred.cc:258
258                     DynamicMMap dyn(0, mapSize, 0);
(gdb) b mmap.cc:223
Breakpoint 5 at 0xfe51a40: file contrib/mmap.cc, line 223.
(gdb) inf br
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x10002f54 in RredMethod::patchMMap(FileFd&, FileFd&, FileFd&, Hashes*) const at rred.cc:258
        breakpoint already hit 3 times
5       breakpoint     keep y   0x0fe51a40 in DynamicMMap::DynamicMMap(unsigned long, unsigned long const&, unsigned long const&, unsigned long const&) at contrib/mmap.cc:223
(gdb) cont
Continuing.

Breakpoint 5, DynamicMMap::DynamicMMap (this=0xbfc759f4, Flags=0, WorkSpace=@0xbfc759d8, Grow=@0xbfc759ac, Limit=@0xbfc759a8) at contrib/mmap.cc:223
223             if (_error->PendingError() == true)
(gdb) l
218     DynamicMMap::DynamicMMap(unsigned long Flags,unsigned long const &WorkSpace,
219                              unsigned long const &Grow, unsigned long const &Limit) :
220                     MMap(Flags | NoImmMap | UnMapped), Fd(0), WorkSpace(WorkSpace),
221                     GrowFactor(Grow), Limit(Limit)
222     {
223             if (_error->PendingError() == true)
224                     return;
225
226             // disable Moveable if we don't grow
227             if (Grow == 0)
(gdb) p _error
No symbol "_error" in current context.
(gdb) p _GetErrorObj()
$7 = (GlobalError *) 0x10051a20
(gdb) p *_GetErrorObj()
$8 = {Messages = {<std::_List_base<GlobalError::Item, std::allocator<GlobalError::Item> >> = {_M_impl = {<std::allocator<std::_List_node<GlobalError::Item> >> = {<__gnu_cxx::new_allocator<std::_List_node<GlobalError::Item> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x10051430, _M_prev = 0x10051430}}}, <No data fields>}, PendingFlag = true, Stacks = {<std::_List_base<GlobalError::MsgStack, std::allocator<GlobalError::MsgStack> >> = {_M_impl = {<std::allocator<std::_List_node<GlobalError::MsgStack> >> = {<__gnu_cxx::new_allocator<std::_List_node<GlobalError::MsgStack> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x10051a2c, _M_prev = 0x10051a2c}}}, <No data fields>}}
(gdb) p _GetErrorObj()->Messages
$9 = {<std::_List_base<GlobalError::Item, std::allocator<GlobalError::Item> >> = {_M_impl = {<std::allocator<std::_List_node<GlobalError::Item> >> = {<__gnu_cxx::new_allocator<std::_List_node<GlobalError::Item> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x10051430, _M_prev = 0x10051430}}}, <No data fields>}
(gdb) p _GetErrorObj()->Messages.first
There is no member or method named first.
(gdb) p _GetErrorObj()->Messages.first()
Couldn't find method std::list<GlobalError::Item, std::allocator<GlobalError::Item> >::first
(gdb) p _GetErrorObj()->Messages.head()
Couldn't find method std::list<GlobalError::Item, std::allocator<GlobalError::Item> >::head
(gdb) p _GetErrorObj()->Messages.front()
$10 = (GlobalError::Item &) @0x10051438: {Text = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x100513dc "Couldn't make mmap of 2393964544 bytes - mmap (12: Cannot allocate memory)"}}, Type = GlobalError::ERROR}
(gdb) p _GetErrorObj()->DumpErrors(GlobalError::DEBUG);
A syntax error in expression, near `DEBUG);'.
(gdb) p _GetErrorObj()->DumpErrors(GlobalError::MsgType.DEBUG);
A syntax error in expression, near `.DEBUG);'.
(gdb) p _GetErrorObj()->DumpErrors(GlobalError::MsgType::DEBUG);
A syntax error in expression, near `DEBUG);'.
(gdb) p _GetErrorObj()->DumpErrors(0);
Invalid character ';' in expression.
(gdb) p _GetErrorObj()->DumpErrors(0)
Cannot evaluate function -- may be inlined
(gdb) p _GetErrorObj()->DumpErrors(stdout, 0)
Cannot resolve method GlobalError::DumpErrors to any overloaded instance
(gdb) p _GetErrorObj()->DumpErrors(stdout, 0, true)
Cannot resolve method GlobalError::DumpErrors to any overloaded instance
(gdb) p _GetErrorObj()->DumpErrors()
$11 = void
(gdb) cont
Continuing.

Breakpoint 1, RredMethod::patchMMap (this=0xbfc75dcc, Patch=..., From=..., out_file=..., hash=0xbfc75bc0) at rred.cc:258
258                     DynamicMMap dyn(0, mapSize, 0);
(gdb) cont
Continuing.

Breakpoint 5, DynamicMMap::DynamicMMap (this=0xbfc759f4, Flags=0, WorkSpace=@0xbfc759d8, Grow=@0xbfc759ac, Limit=@0xbfc759a8) at contrib/mmap.cc:223
223             if (_error->PendingError() == true)
(gdb) cont
Continuing.

Program received signal SIGSEGV, Segmentation fault.
Cannot remove breakpoints because program is no longer writable.
Further execution is probably impossible.
munmap () at ../sysdeps/unix/syscall-template.S:83
83      ../sysdeps/unix/syscall-template.S: Datei oder Verzeichnis nicht gefunden.
        in ../sysdeps/unix/syscall-template.S
(gdb) cont
Continuing.

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb) target remote localhost:4432
Remote debugging using localhost:4432
Reading symbols from /lib/ld.so.1...Reading symbols from /usr/lib/debug/lib/ld-2.11.2.so...done.
done.
Loaded symbols for /lib/ld.so.1
_start () at ../sysdeps/powerpc/powerpc32/dl-start.S:33
33      ../sysdeps/powerpc/powerpc32/dl-start.S: Datei oder Verzeichnis nicht gefunden.
        in ../sysdeps/powerpc/powerpc32/dl-start.S
(gdb) info br
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x10002f54 in RredMethod::patchMMap(FileFd&, FileFd&, FileFd&, Hashes*) const at rred.cc:258
        breakpoint already hit 4 times
5       breakpoint     keep y   <PENDING>  mmap.cc:223
        breakpoint already hit 2 times
(gdb) br rred.cc:257
Breakpoint 6 at 0x10002f44: file rred.cc, line 257.
(gdb) cont
Continuing.
Remote connection closed
(gdb) br rred.cc:257
Note: breakpoint 6 also set at pc 0x10002f44.
Breakpoint 7 at 0x10002f44: file rred.cc, line 257.
(gdb) target remote localhost:4432
Remote debugging using localhost:4432
Reading symbols from /lib/ld.so.1...Reading symbols from /usr/lib/debug/lib/ld-2.11.2.so...done.
done.
Loaded symbols for /lib/ld.so.1
_start () at ../sysdeps/powerpc/powerpc32/dl-start.S:33
33      in ../sysdeps/powerpc/powerpc32/dl-start.S
(gdb) inf br
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x10002f54 in RredMethod::patchMMap(FileFd&, FileFd&, FileFd&, Hashes*) const at rred.cc:258
        breakpoint already hit 4 times
5       breakpoint     keep y   <PENDING>  mmap.cc:223
        breakpoint already hit 2 times
6       breakpoint     keep y   0x10002f44 in RredMethod::patchMMap(FileFd&, FileFd&, FileFd&, Hashes*) const at rred.cc:257
7       breakpoint     keep y   0x10002f44 in RredMethod::patchMMap(FileFd&, FileFd&, FileFd&, Hashes*) const at rred.cc:257
(gdb) del 7
(gdb) inf br
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x10002f54 in RredMethod::patchMMap(FileFd&, FileFd&, FileFd&, Hashes*) const at rred.cc:258
        breakpoint already hit 4 times
5       breakpoint     keep y   <PENDING>  mmap.cc:223
        breakpoint already hit 2 times
6       breakpoint     keep y   0x10002f44 in RredMethod::patchMMap(FileFd&, FileFd&, FileFd&, Hashes*) const at rred.cc:257
(gdb) cont
Continuing.

Breakpoint 6, RredMethod::patchMMap (this=0xbfee7dcc, Patch=..., From=..., out_file=..., hash=0xbfee7bc0) at rred.cc:257
257                     unsigned long mapSize = Patch.Size();
(gdb) p Patch
$12 = (FileFd &) @0xbfee7aac: {_vptr.FileFd = 0x100174b8, iFd = 4, Flags = 1, FileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x1045897c "/var/lib/apt/lists/ftp.de.debian.org_debian_dists_unstable_main_source_Sources.ed"}}, TemporaryFileName = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xfd6813c ""}}, gz = 0x10458a38}
(gdb) step
FileFd::Size (this=0xbfee7aac) at contrib/fileutl.cc:952
952        unsigned long size = FileSize();
(gdb) l
947     // FileFd::Size - Return the size of the content in the file            /*{{{*/
948     // ---------------------------------------------------------------------
949     /* */
950     unsigned long FileFd::Size()
951     {
952        unsigned long size = FileSize();
953
954        // only check gzsize if we are actually a gzip file, just checking for
955        // "gz" is not sufficient as uncompressed files will be opened with
956        // gzopen in "direct" mode as well
(gdb) n
957        if (gz && !gzdirect(gz) && size > 0)
(gdb) 
962            off_t orig_pos = lseek(iFd, 0, SEEK_CUR);
(gdb) 
963            if (lseek(iFd, -4, SEEK_END) < 0)
(gdb) 
965            if (read(iFd, &size, 4) != 4)
(gdb) 
967            size &= 0xFFFFFFFF;
(gdb) 
969            if (lseek(iFd, orig_pos, SEEK_SET) < 0)
(gdb) 
971            return size;
(gdb) p size
$13 = 2393964544
(gdb) p gz
$14 = (gzFile) 0x10458a38
(gdb) p ntoh
ntohl  ntohs  
(gdb) p hton
htonl    htonl.c  htons    htons.c  
(gdb) p hton
htonl    htonl.c  htons    htons.c  
(gdb) p htonl(size)
$15 = 2393964544
(gdb) p ntohl(size)
$16 = -1901002752
(gdb) p /x size
$17 = 0x8eb10000
(gdb) p size
$18 = 2393964544

Regards, Jörg.
-- 
Alles, wovor wir Angst haben müssen, ist die Angst selbst.
       	     	       	     	     	 (Franklin D. Roosevelt)

Attachment: signature.asc
Description: Digital signature http://en.wikipedia.org/wiki/OpenPGP


Reply to: