** Description changed:

+ [IMPACT]
+ 
+  * This can prevent users from installing helper packages needed to do
+ their work (for example, can prevent opening rar, 7z, or jnlp files).
+ 
+  * In addition, this is a highly reported crash on errors.ubuntu.com, so
+ we know it affects many users.
+ 
+  * The proposed fix just makes a certain deferral callback not be called
+ twice, avoiding the assertion crash.
+ 
+ [TESTCASE]
+ 
+  * Unfortunately, I could not reproduce.  So the patch is only based on
+ code analysis.  Someone that can reproduce needs to test it.  I'm hoping
+ by being accepted into precise-proposed, that will make it easier for
+ the affected audience to test.
+ 
+  * But the indicated reproduction steps as reported are:
+ 0) Make sure you don't have rar installed: sudo apt-get purge rar unrar
+ 1) Download a rar file.  Try 
http://www.philipp-winterberg.com/download/example.rar
+ 2) Open that file with file-roller
+ 3) Try to install the necessary packages to open it
+ 
+ [Regression Potential]
+ 
+  * Regression potential is low.  In the worst case, I could imagine if
+ the patch is bogus, I could imagine the installation dialog would just
+ stay open indefinitely because the deferral callback never got called.
+ 
+ [Patch]
+ 
+ The patch is simple:
+ 
+ --- sessioninstaller-0.20+bzr128.orig/sessioninstaller/backends/aptd.py
+ +++ sessioninstaller-0.20+bzr128/sessioninstaller/backends/aptd.py
+ @@ -44,12 +44,11 @@ class AptDaemonBackend(object):
+      def _run_trans(self, trans, parent, interaction):
+          deferred = defer.Deferred()
+          dia = aptdaemon.gtk3widgets.AptProgressDialog(trans)
+ -        dia.connect("finished", lambda x: deferred.callback())
+          if parent:
+              dia.realize()
+              dia.set_transient_for(parent)
+          dia.run(close_on_finished=True, show_error=True,
+ -                reply_handler=lambda: True,
+ +                reply_handler=deferred.callback,
+                  error_handler=deferred.errback)
+          return deferred 
+ 
+ =========================================================
+ 
  unable to do partial upgrade
  
  ProblemType: Crash
  DistroRelease: Ubuntu 11.10
  Package: sessioninstaller 0.20+bzr120-0ubuntu2
  ProcVersionSignature: Ubuntu 3.0.0-11.17-generic 3.0.4
  Uname: Linux 3.0.0-11-generic i686
  ApportVersion: 1.22.1-0ubuntu2
  Architecture: i386
  Date: Tue Sep 13 12:58:04 2011
  ExecutablePath: /usr/bin/session-installer
  InstallationMedia: Ubuntu 11.10 "Oneiric Ocelot" - Beta i386 (20110901)
  InterpreterPath: /usr/bin/python2.7
  PackageArchitecture: all
  ProcCmdline: /usr/bin/python /usr/bin/session-installer
  ProcEnviron:
-  SHELL=/bin/bash
-  PATH=(custom, no user)
-  LANG=en_US.UTF-8
+  SHELL=/bin/bash
+  PATH=(custom, no user)
+  LANG=en_US.UTF-8
  PythonArgs: ['/usr/bin/session-installer']
  SourcePackage: sessioninstaller
  Title: session-installer crashed with AlreadyCalledDeferred in callback()
  UpgradeStatus: Upgraded to oneiric on 2011-09-13 (0 days ago)
  UserGroups: adm admin cdrom dialout lpadmin plugdev sambashare

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/848605

Title:
  session-installer crashed with AlreadyCalledDeferred in callback()

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/sessioninstaller/+bug/848605/+subscriptions

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

Reply via email to