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 »"

Attachment: signature.asc
Description: Digital signature

Reply via email to