[parisc-linux] some information on apt woes
bame@debian.org
bame@debian.org
Sat, 26 May 2001 22:08:09 -0600
Summary:
Latest versions of apt don't compile with g++3.0 even on x86.
Upstream CVS apt has bugs which might or might not be related to
my changes to compile with g++3.0. Upstream CVS apt doesn't even
compile (for me) using older compilers on x86.
One current parisc apt failure mode of both 0.4.0 and 0.5.3 appears
to be a kernel VM problem though that doesn't make sense since the
variable to make 0.4.0 fail is to update to glibc 2.2.3 from 2.2.1
unless it's just the right change to the memory map to tweek some bug.
Many thanks to tausq (Randolph Chung) for providing a patch with
many of the changes required to make apt compile with g++3.0
If someone with a clue about VM would take a look I'd appreaciate it
because I'm really burnt out on apt right now.
VM Problem?
Reproduce by removing /var/cache/apt/*.bin then running apt-get update.
apt-get updates which don't download new packages file seem to work.
The test generates a type 6 fault trying to fetch an instruction from
an apt-specific shared library from which code has been happily
executing up to this point. The failure has the hallmarks (IIR is
0x43ffff80) of fetching from an unmapped page. Gdb disassembly of
this area immediately after the fault shows garbage.
The fault appears to happen shortly
after the pkgcache.bin file, in which apt builds a memory-mapped
database, is munmap-ped. As we've seen, apt functions correctly
even with this defect which is consistent with the apt database
being updated properly in spite of the fault.
apt 0.5.3 + parisc problem:
Like 0.4.0, apt 0.5.3 (hacked to compile with g++3.0 and working
ok on x86) faults in the above test case. However apt-get installs
also fail, by segfaulting prior to doing their work. Through layers
of C++ code it appears that a bad data value is being read from the
(memory-mapped) database. That value is used to construct a
pointer which is invalid leading to a type=15 fault.
I can't find the bad data value in the database file from which
it must be coming, leading me to conclude I either haven't yet
found the root cause (quite possible -- it has taken hours to
grok and trace the layers of C++) or that the database is corrupt due to
premature death of the apt-get update. I'm guessing the former.
Generic apt 0.5.3 problem:
'apt-cache dump' built with my changes crashes on both x86 and
parisc (the 0.5.3 x86 official debian package works fine). This
could indicate some subtle defect with the conversion to g++3.0
most of which deals with strings. Apt seems to use C++ strings
extensively, but is always poking around inside their guts, so
it would be easy to do something stupid there I think. It's also
possible that the g++3.0 is unconvering an existing defect.
-P