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

Bug#283319: apt-get autoclean segfaults on sparc32



Package: apt
Version: 0.5.27
Severity: important

Hello,

I have run into problems with apt-get when attempting to build the netboot
image for sparc32 from the debian-installer-20041027 source. Below is a
fragment of my build log (actual failure happens in get-packages script,
where I have set +x for extra debugging output):

+ apt-get --assume-yes -o Dir::Etc::sourcelist=/home/d-i/debian-installer-200410
27/build/sources.list.udeb.local -o Dir::State=/home/d-i/debian-installer-200410
27/build/apt.udeb/state -o Debug::NoLocking=true -o Dir::Cache=/home/d-i/debian-
installer-20041027/build/apt.udeb/cache -o Acquire::Retries=3 -o Apt::Architectu
re=sparc update
Hit http://ftp.egr.msu.edu sid/main/debian-installer Packages
Ign http://ftp.egr.msu.edu sid/main/debian-installer Release
Hit http://ftp.egr.msu.edu sid/main Packages
Hit http://ftp.egr.msu.edu sid/main Release
Reading Package Lists...
+ apt-get --assume-yes -o Dir::Etc::sourcelist=/home/d-i/debian-installer-200410
27/build/sources.list.udeb.local -o Dir::State=/home/d-i/debian-installer-200410
27/build/apt.udeb/state -o Debug::NoLocking=true -o Dir::Cache=/home/d-i/debian-
installer-20041027/build/apt.udeb/cache -o Acquire::Retries=3 -o Apt::Architectu
re=sparc autoclean
Reading Package Lists...
Building Dependency Tree..../get-packages: line 104: 19681 Segmentation fault   
   (core dumped) $APT_GET autoclean
make[2]: *** [stamps/get_udebs-sparc32_netboot-2.6-stamp] Error 139
make[1]: *** [_build] Error 2
make: *** [build_sparc32_netboot-2.6] Error 2

Next, I've built a version of apt with debugging symbols and traced it using gdb:

debian:/home/d-i/debian-installer-20041027/build# gdb apt-get
GNU gdb 6.1-debian
Copyright 2004 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 "sparc-linux"...Using host libthread_db library "/lib/libthread_db.so.1".

(gdb) set args --assume-yes -o Dir::Etc::sourcelist=/home/d-i/debian-installer-20041027/build/sources.list.udeb.local -o Dir::State=/home/d-i/debian-installer-20041027/build/apt.udeb/state -o Debug::NoLocking=true -o Dir::Cache=/home/d-i/debian-installer-20041027/build/apt.udeb/cache -o Acquire::Retries=3 -o Apt::Architecture=sparc autoclean
(gdb) run
Starting program: /usr/bin/apt-get --assume-yes -o Dir::Etc::sourcelist=/home/d-i/debian-installer-20041027/build/sources.list.udeb.local -o Dir::State=/home/d-i/debian-installer-20041027/build/apt.udeb/state -o Debug::NoLocking=true -o Dir::Cache=/home/d-i/debian-installer-20041027/build/apt.udeb/cache -o Acquire::Retries=3 -o Apt::Architecture=sparc autoclean
Reading Package Lists... Done
Building Dependency Tree... 50%
Program received signal SIGSEGV, Segmentation fault.
0x5007ac20 in pkgCache::PrvIterator::OwnerPkg (this=0xefffe268)
    at cacheiterators.h:245
245     cacheiterators.h: No such file or directory.
        in cacheiterators.h
(gdb) bt
#0  0x5007ac20 in pkgCache::PrvIterator::OwnerPkg (this=0xefffe268)
    at cacheiterators.h:245
#1  0x5007d708 in pkgDepCache::CheckDep (this=0x49050, Dep=
      {Dep = 0x507962d0, Type = DepVer, Owner = 0x48fe8}, Type=1, Res=@0xefffe318)
    at depcache.cc:143
#2  0x50080f60 in pkgDepCache::CheckDep (this=0x49050, Dep=
      {Dep = 0x507962d0, Type = DepVer, Owner = 0x48fe8}, Type=1) at depcache.h:146
#3  0x5007e72c in pkgDepCache::DependencyState (this=0x49050, D=@0xefffe418)
    at depcache.cc:359
#4  0x5007ebd0 in pkgDepCache::Update (this=0x49050, Prog=0xefffe628)
    at depcache.cc:430
#5  0x5007d174 in pkgDepCache::Init (this=0x49050, Prog=0xefffe628)
    at depcache.cc:93
#6  0x500adeb0 in pkgCacheFile::Open (this=0xefffe710, Progress=@0xefffe628, 
    WithLock=true) at cachefile.cc:105
#7  0x0002ba88 in CacheFile::Open (this=0xefffe710, WithLock=true) at apt-get.cc:94
#8  0x00024f14 in DoAutoClean (CmdL=@0xefffe848) at apt-get.cc:1753
#9  0x5006ac2c in CommandLine::DispatchArg (this=0xefffe848, Map=0xefffe858, 
    NoMatch=true) at contrib/cmndline.cc:340
#10 0x0002a164 in main (argc=15, argv=0xefffebf4) at apt-get.cc:2478

The offending line in cacheiterators.h is:

inline PkgIterator OwnerPkg() {return PkgIterator(*Owner,Owner->PkgP + Owner->VerP[Prv->Version].ParentPkg);};

So I try to print the values of the variables involved:

(gdb) print Owner
$1 = (pkgCache *) 0x48fe8
(gdb) print Owner->PkgP
$2 = (class pkgCache::Package *) 0x50400000
(gdb) print Owner->VerP
$3 = (class pkgCache::Version *) 0x50400000
(gdb) print Prv->Version
$4 = 761422195
(gdb) 

The value of the Prv->Version, used as the array index, seems obviously wrong.
The two identical pointer values also seem suspicious, but I cannot immediately
tell whether it is a problem.

The sources.list.udeb.local, mentioned in the command above, contains two lines:

deb http://ftp.egr.msu.edu/debian sid main/debian-installer
deb http://ftp.egr.msu.edu/debian sid main

I would be happy to provide further information or relevant files upon request.

Best regards,

Jurij Smakov                                        jurij@wooyd.org
Key: http://www.wooyd.org/pgpkey/                   KeyID: C99E03CC


-- Package-specific info:

-- apt-config dump --

APT "";
APT::Architecture "sparc";
APT::Build-Essential "";
APT::Build-Essential:: "build-essential";
Dir "/";
Dir::State "var/lib/apt/";
Dir::State::lists "lists/";
Dir::State::cdroms "cdroms.list";
Dir::State::userstatus "status.user";
Dir::State::status "/var/lib/dpkg/status";
Dir::Cache "var/cache/apt/";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "srcpkgcache.bin";
Dir::Cache::pkgcache "pkgcache.bin";
Dir::Etc "etc/apt/";
Dir::Etc::sourcelist "sources.list";
Dir::Etc::vendorlist "vendors.list";
Dir::Etc::vendorparts "vendors.list.d";
Dir::Etc::main "apt.conf";
Dir::Etc::parts "apt.conf.d";
Dir::Etc::preferences "preferences";
Dir::Bin "";
Dir::Bin::methods "/usr/lib/apt/methods";
Dir::Bin::dpkg "/usr/bin/dpkg";
DPkg "";
DPkg::Pre-Install-Pkgs "";
DPkg::Pre-Install-Pkgs:: "/usr/sbin/dpkg-preconfigure --apt || true";

-- (no /etc/apt/preferences present) --


-- (/etc/apt/sources.list present, but not submitted) --

The global sources.list file is irrelevant for this bug.

-- System Information:
Debian Release: 3.1
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: sparc
Kernel: Linux 2.6.8-1-sparc32
Locale: LANG=C, LC_CTYPE=C

Versions of packages apt depends on:
ii  libc6                       2.3.2.ds1-18 GNU C Library: Shared libraries an
ii  libgcc1                     1:3.4.2-2    GCC support library
ii  libstdc++5                  1:3.3.4-13   The GNU Standard C++ Library v3

-- no debconf information



Reply to: