aptitude segfaults during dependency resolution

Bug #1507211 reported by Rogério Theodoro de Brito on 2015-10-17
20
This bug affects 2 people
Affects Status Importance Assigned to Milestone
aptitude (Debian)
Fix Released
Unknown
aptitude (Ubuntu)
Medium
Unassigned
Wily
High
Unassigned

Bug Description

[Impact]

Aptitude regularly crashes when trying to mark packages for deletion due to an infinite loop in a recursive function (improperly handled circular dependencies).

[Test Case]

On a fresh English install of Ubuntu 15.10 desktop:

1. Start up aptitude: sudo aptitude
2. Mark the following packages as automatically installed (select them and
   press Shift-M):
     * language-pack-en
     * language-pack-en-base
     * language-pack-gnome-en
     * language-pack-gnome-en-base
   Aptitude should now show all four packages as marked for deletion.
3. Mark language-pack-gnome-en-base for purge by selecting it and pressing
   '_' (underscore).

If the bug is not fixed, aptitude will crash. (Your terminal will likely be in a bad state. Run 'reset' to fix it.)

[Regression Potential]

The patch alters the logic used to automatically mark packages for deletion. Any regressions should appear there.

The patch is cherry-picked from the upstream Git repository, so upstream recognizes the bug and approves of this fix. However, upstream might have committed additional related changes (e.g., to fix a hypothetical flaw in this patch) without us realizing it.

[Original Description]

Hi.

I just installed a new Ubuntu MATE 15.10 for my mom and I was selecting packages when aptitude simply crashed. I am using (for reasons beyond my control right now) the 32 bit version if that matters.

I don't know if I can reproduce the problem or not, but I may try (despite the fact I do not have frequent access to this computer).

If any further information is needed, please let me know.

Thanks,

Rogério Brito.

ProblemType: Crash
DistroRelease: Ubuntu 15.10
Package: aptitude 0.7.3-1ubuntu1
ProcVersionSignature: Ubuntu 4.2.0-16.19-generic 4.2.3
Uname: Linux 4.2.0-11-generic i686
NonfreeKernelModules: wl
ApportVersion: 2.19.1-0ubuntu2
Architecture: i386
Date: Sat Oct 17 21:17:03 2015
ExecutablePath: /usr/bin/aptitude-curses
InstallationDate: Installed on 2015-10-17 (0 days ago)
InstallationMedia: Ubuntu-MATE 15.10 "Wily Werewolf" - Alpha i386 (20150924)
ProcCmdline: aptitude
SegvAnalysis: Skipped: missing required field "Disassembly"
Signal: 11
SourcePackage: aptitude
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups:

== Regression details ==
Discovered in version: 0.7.3-1ubuntu1
Last known good version: 0.6.11-1ubuntu3

StacktraceTop:
 stringcasecmp (BEnd=<optimized out>, B=0x8037cb6e "aptitude::Purge-Unused", A=...) at ../build/include/apt-pkg/strutl.h:143
 Configuration::Lookup (this=0x80dc72f8, Head=0x80dc7308, S=0x8037cb6e "aptitude::Purge-Unused", Len=@0xbf396058: 8, Create=@0xbf39609b: false) at /build/apt-J_Z9yD/apt-1.0.10.2ubuntu1/apt-pkg/contrib/configuration.cc:102
 Configuration::Lookup (this=0x80dc72f8, Name=0x8037cb6e "aptitude::Purge-Unused", Create=@0xbf39609b: false) at /build/apt-J_Z9yD/apt-1.0.10.2ubuntu1/apt-pkg/contrib/configuration.cc:138
 Lookup (Name=0x8037cb6e "aptitude::Purge-Unused", this=0x80dc72f8) at ../build/include/apt-pkg/configuration.h:68
 Configuration::FindB (this=0x80dc72f8, Name=0x8037cb6e "aptitude::Purge-Unused", Default=@0xbf3960cc: false) at /build/apt-J_Z9yD/apt-1.0.10.2ubuntu1/apt-pkg/contrib/configuration.cc:303

Changed in aptitude (Ubuntu):
importance: Undecided → Medium
tags: removed: need-i386-retrace
information type: Private → Public

I think that I found a way to (at least partially) reproduce the problem: if I press _ (underscore) after I have selected packages to be (automatically) uninstalled (so that they are purged instead of just uninstalled), then I get the segfault that described before.

Again, if any further information is needed, please let me know.

Rogério.

Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in aptitude (Ubuntu):
status: New → Confirmed
Richard Hansen (rhansen) on 2015-10-26
description: updated
Changed in aptitude (Debian):
status: Unknown → Fix Released
Richard Hansen (rhansen) wrote :

Attached is a debdiff containing a fix for this problem. I have also uploaded a fixed package to my PPA:

https://launchpad.net/~rhansen/+archive/ubuntu/bug1507211

The attachment "debdiff.patch" seems to be a debdiff. The ubuntu-sponsors team has been subscribed to the bug report so that they can review and hopefully sponsor the debdiff. If the attachment isn't a patch, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are member of the ~ubuntu-sponsors, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issue please contact him.]

tags: added: patch
Brian Murray (brian-murray) wrote :

This is fixed in Xenial, the development release of Ubuntu which will become 16.04, if you'd like to see this fixed in Wily please add a test case following the procedure documented at wiki.ubuntu.com/StableReleaseUpdates. Thanks!

Changed in aptitude (Ubuntu):
status: Confirmed → Fix Released
Richard Hansen (rhansen) on 2015-12-15
description: updated
Richard Hansen (rhansen) on 2015-12-15
description: updated
Changed in aptitude (Ubuntu Wily):
status: New → Triaged
importance: Undecided → High
Brian Murray (brian-murray) wrote :

I'll go ahead and sponsor this, thanks for working on it!

Hi.

On Dec 15 2015, Brian Murray wrote:
> I'll go ahead and sponsor this, thanks for working on it!

Thanks for both of you for working on this.

--
Rogério Brito : rbrito@{ime.usp.br,gmail.com} : GPG key 4096R/BCFCAAAA
http://cynic.cc/blog/ : github.com/rbrito : profiles.google.com/rbrito
DebianQA: http://qa.debian.org/developer.php?login=rbrito%40ime.usp.br

Hello Rogério, or anyone else affected,

Accepted aptitude into wily-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/aptitude/0.7.3-1ubuntu1.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in aptitude (Ubuntu Wily):
status: Triaged → Fix Committed
tags: added: verification-needed
Richard Hansen (rhansen) wrote :

0.7.3-1ubuntu1.1 works for me. Thanks!

tags: added: verification-done
removed: verification-needed
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package aptitude - 0.7.3-1ubuntu1.1

---------------
aptitude (0.7.3-1ubuntu1.1) wily; urgency=medium

  * Cherry-pick upstream commit d6b67ab from 0.7.4 to fix an infinite
    loop and crash when determining which packages can be
    automatically deleted (#801430). (Closes: LP: #1507211)

 -- Richard Hansen <email address hidden> Tue, 15 Dec 2015 11:19:01 -0800

Changed in aptitude (Ubuntu Wily):
status: Fix Committed → Fix Released

The verification of the Stable Release Update for aptitude has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.