thank you for your information, sir. On Wed, Aug 12, 2015 at 9:08 AM, Julian Andres Klode <juli...@ubuntu.com> wrote:
> This is fixed in Debian unstable's 0.9.10 (and possibly earlier > versions), so it is fixed in wily's 1.0.9.10 as well. > > ** Changed in: apt (Ubuntu) > Status: Confirmed => Fix Released > > -- > You received this bug notification because you are subscribed to apt in > Ubuntu. > Matching subscriptions: dragonhahney > https://bugs.launchpad.net/bugs/1450966 > > Title: > apt-get install segfault > > Status in apt package in Ubuntu: > Fix Released > > Bug description: > Package: apt > Version: apt-0.8.16~exp12ubuntu10.22 > root@0fb5fe4c0c0f:/build/apt-0.8.16~exp12ubuntu10.22# lsb_release -rd > Description: Ubuntu 12.04.5 LTS > Release: 12.04 > > Expected to happen: running "apt-get install [ package ]" installs the > package > > What happened: running "apt-get install [ package ]" encounters a > segfault > > Debug notes: > > This occurred while installing a package that depends on many other > packages. The package I was installing had "Section" defined, while > the offending dependent package did not have "Section" defined. > > I built apt from source with debug symbols and located found the issue > occurs because a NULL value is being passed to strcmp (frame 1). This > happens because a prior function (frame 2) assumes that if the parent > package has "Section" defined, then the defendant package will also > have "Section" defined as well. > > Adding the "Section" field to the offending package works around the > segfault issue. > > Given that the policy manual (https://www.debian.org/doc/debian-policy > /ch-controlfields.html) states that section is recommended it's > technically correct to have a packge omit the Section field, and as > such, apt should tolerate this situation. > > GDB: > > Program received signal SIGSEGV, Segmentation fault. > __strcmp_sse42 () at ../sysdeps/x86_64/multiarch/strcmp-sse42.S:163 > 163 ../sysdeps/x86_64/multiarch/strcmp-sse42.S: No such file or > directory. > (gdb) where > #0 __strcmp_sse42 () at ../sysdeps/x86_64/multiarch/strcmp-sse42.S:163 > #1 0x00007ffff7ad7479 in ConfigValueInSubTree (SubTree=0x7ffff7b85879 > "APT::Never-MarkAuto-Sections", needle=0x0) at depcache.cc:53 > #2 0x00007ffff7adcb54 in pkgDepCache::MarkInstall (this=0x668fb0, > Pkg=..., AutoInst=true, Depth=0, FromUser=true, > ForceImportantDeps=false) at depcache.cc:1208 > #3 0x0000000000431259 in TryToInstall::doAutoInstall > (this=0x7fffffffd710) at apt-get.cc:878 > #4 0x00000000004218a7 in DoInstall (CmdL=...) at apt-get.cc:1901 > #5 0x00007ffff7abe322 in CommandLine::DispatchArg (this=0x7fffffffe5f0, > Map=0x7fffffffe4b0, NoMatch=true) at contrib/cmndline.cc:337 > #6 0x000000000042c109 in main (argc=5, argv=0x7fffffffe738) at > apt-get.cc:3523 > > Frame 1, NULL value getting passed to strcmp > > (gdb) f 1 > #1 0x00007ffff7ad7479 in ConfigValueInSubTree (SubTree=0x7ffff7b85879 > "APT::Never-MarkAuto-Sections", needle=0x0) at depcache.cc:53 > 53 if (strcmp(needle, Opts->Value.c_str()) == 0) > (gdb) p needle > $4 = 0x0 > (gdb) list > 48 Opts = Opts->Child; > 49 for (; Opts != 0; Opts = Opts->Next) > 50 { > 51 if (Opts->Value.empty() == true) > 52 continue; > 53 if (strcmp(needle, Opts->Value.c_str()) == 0) > 54 return true; > 55 } > 56 } > 57 return false; > > > Frame 2, code assumes InstVer.Section() is non-null if Pkg.Section() > evaluates to true. > > (gdb) f 2 > #2 0x00007ffff7adcb54 in pkgDepCache::MarkInstall (this=0x668fb0, > Pkg=..., AutoInst=true, Depth=0, FromUser=true, > ForceImportantDeps=false) at depcache.cc:1208 > 1208 if(Pkg.Section() && > ConfigValueInSubTree("APT::Never-MarkAuto-Sections", InstVer.Section())) > (gdb) p Pkg.Section() > $2 = 0x7ffff5b1325e "Optional" > (gdb) p InstVer.Section() > $6 = 0x0 > (gdb) list > 1203 if(DebugAutoInstall == true) > 1204 std::clog << OutputInDepth(Depth) << "Installing > " << InstPkg.Name() > 1205 << " as " << Start.DepType() << " of " > << Pkg.Name() > 1206 << std::endl; > 1207 // now check if we should consider it a automatic > dependency or not > 1208 if(Pkg.Section() && > ConfigValueInSubTree("APT::Never-MarkAuto-Sections", InstVer.Section())) > 1209 { > 1210 if(DebugAutoInstall == true) > 1211 std::clog << OutputInDepth(Depth) << "Setting > NOT as auto-installed (direct " > 1212 << Start.DepType() << " of pkg in > APT::Never-MarkAuto-Sections)" << std::endl; > > To manage notifications about this bug go to: > https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1450966/+subscriptions > -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1450966 Title: apt-get install segfault To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1450966/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs