There do appear to be potentially 2 problems here:

1) the issue whereby /var/lib/dpkg/status is somehow truncated

    "dpkg-query -l" indeed expects to find the following fields for a
package as a minimum:

    name, description, maintainer, version, status (required to actually
get any output from "dpkg -l")

2) "dpkg-query -l" is segfaulting when given the invalid "status" file

The code detects the problem but rather than issuing an error message,
it gets a SIGSEGV. What we expect to see from "dpkg -l" under the
conditions in (1) is:

warning, in file '/var/lib/dpkg/status' near line 3 package 'dpkg':
 missing description
warning, in file '/var/lib/dpkg/status' near line 3 package 'dpkg':
 missing maintainer
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                          Version                       Description
+++-=============================-=============================-==========================================================================
ii  dpkg                          1.15.8.5ubuntu1               
______

I've looked at (2) first: the problem is observed when va_end() is called in 
lib/dpkg/parsehelp.c:parse_warn(). Call hierarchy is:
modstatdb_init() -> parsedb() ->  parse_ensure_have_field() -> parse_warn(). 
Once the function returns (just after calling va_end()), the stack has been 
trashed. valgrind is alas no help here as it fails on armel ("valgrind: the 
'impossible' happened" [bug to be raised]).

-- 
dpkg segfaults during debootstrap on natty armel
https://bugs.launchpad.net/bugs/674146
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to