Package: dpkg Version: 1.13.25 Severity: important When the /var/lib/dpkg/available file is full of zeroes, some dpkg incoations fail segfaulting. I attach informations from gdb running dpkg-query that permitted to find why dpkg segfaults.
In such a case, dpkg should die segfaulting, but handle the bad file
gracefully and inform the user of
1/ what is happening
2/ how to repair
In this case:
# dpkg --clear-avail && aptitude update
--- System information. ---
Architecture: i386
Kernel: Linux 2.6.17-2-k7
Debian Release: lenny/sid
990 testing www.debian-multimedia.org
990 testing security.debian.org
990 testing ftp.nerim.net
502 stable ftp.nerim.net
501 unstable ftp.nerim.net
500 unstable ftp.nerim.net
500 stable security.debian.org
500 stable ftp.nerim.net
200 unstable www.debian-multimedia.org
200 stable www.debian-multimedia.org
--- Package information. ---
Depends (Version) | Installed
=======================-+-===========
|
--
[EMAIL PROTECTED]
OpenPGP 0xD9D50D8A
[EMAIL PROTECTED]:~$ gdb dpkg-query GNU gdb 6.4.90-debian Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i486-linux-gnu"...(no debugging symbols found) Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1". (gdb) run --list libc6 Starting program: /usr/bin/dpkg-query --list libc6 (no debugging symbols found) (no debugging symbols found) (no debugging symbols found) (no debugging symbols found) (no debugging symbols found) (no debugging symbols found) Program received signal SIGSEGV, Segmentation fault. 0xa7e80408 in vfprintf () from /lib/tls/i686/cmov/libc.so.6 (gdb) bt #0 0xa7e80408 in vfprintf () from /lib/tls/i686/cmov/libc.so.6 #1 0xa7e9fec1 in vsnprintf () from /lib/tls/i686/cmov/libc.so.6 #2 0x0804f519 in ?? () #3 0x080e4480 in stderr () #4 0x00001000 in ?? () #5 0xafd572c0 in ?? () #6 0xafd579e0 in ?? () #7 0xa7eadae0 in obstack_free () from /lib/tls/i686/cmov/libc.so.6 #8 0x08053438 in ?? () #9 0xafd572c0 in ?? () #10 0xafd579e0 in ?? () #11 0x080f1978 in ?? () #12 0x080e68a8 in ?? () #13 0x00000001 in ?? () #14 0xa7fbeff4 in ?? () from /lib/ld-linux.so.2 #15 0x00000000 in ?? () (gdb) frame 1 #1 0xa7e9fec1 in vsnprintf () from /lib/tls/i686/cmov/libc.so.6 (gdb) info reg eax 0xafd57130 -1344966352 ecx 0x6305af 6489519 edx 0xae4954c0 -1370925888 ebx 0xa7f6fff4 -1476984844 esp 0xafd57170 0xafd57170 ebp 0xafd57278 0xafd57278 esi 0xafd5718c -1344966260 edi 0x80e4480 135152768 eip 0xa7e9fec1 0xa7e9fec1 <vsnprintf+177> eflags 0x10286 [ PF SF IF RF ] cs 0x73 115 ss 0x7b 123 ds 0x7b 123 es 0x7b 123 fs 0x0 0 gs 0x33 51 (gdb) print *(char **)(0xafd57170 + 4) $4 = 0xafd572c0 "erreur d'analyse syntaxique, dans le fichier « /var/lib/dpkg/available » près de la ligne 1:\n EOF après le nom de champ « %.*s »"
signature.asc
Description: Digital signature

