release upgrade crashed on custom configuration file dialog

Bug #1509655 reported by amichair
46
This bug affects 13 people
Affects Status Importance Assigned to Milestone
ubuntu-release-upgrader (Ubuntu)
Fix Released
High
Brian Murray
Xenial
Fix Released
High
Brian Murray

Bug Description

On Kubuntu 15.04 amd64, while running installer to upgrade to 15.10, the GUI froze at 89% complete and /var/log/dist-upgrade/main.log ended with the stack trace below. I indeed have a custom server.xml configuration for Tomcat, so it looks like it crashes when it needs to show the configuration dialog (use maintainers/existing/diff).

Yesterday on #kubuntu channel there was someone complaining about the same thing - his installer GUI froze at %80, and he found a similar stack trace in the log (I only know the last line of the trace was identical, didn't see the full stack trace). He said in his case it looks related to the sane (scanner package) custom configuration file dialog prompt.

I think this is a pretty critical bug since an aborted OS upgrade is likely to render the system unusable for the average user, and it does little to encourage confidence of users in the OS distribution.

2015-10-24 14:34:12,360 DEBUG got a conffile-prompt from dpkg for file: '/etc/tomcat7/server.xml'
2015-10-24 14:34:12,362 DEBUG UI version is 4.0
2015-10-24 14:34:12,362 DEBUG uiname is dialog_conffile
2015-10-24 14:34:12,362 DEBUG toplevel widget is QDialog
2015-10-24 14:34:12,362 DEBUG setting property geometry
2015-10-24 14:34:12,362 DEBUG setting property windowTitle
2015-10-24 14:34:12,362 DEBUG setting property modal
2015-10-24 14:34:12,362 DEBUG push QDialog dialog_conffile
2015-10-24 14:34:12,362 DEBUG push QGridLayout gridlayout
2015-10-24 14:34:12,362 DEBUG setting property text
2015-10-24 14:34:12,362 DEBUG push QPushButton show_difference_button
2015-10-24 14:34:12,362 DEBUG pop widget QPushButton show_difference_button
2015-10-24 14:34:12,362 DEBUG new topwidget <PyQt5.QtWidgets.QDialog object at 0x7fd6799e39d8>
2015-10-24 14:34:12,362 DEBUG setting property sizePolicy
2015-10-24 14:34:12,362 DEBUG setting property text
2015-10-24 14:34:12,363 DEBUG setting property pixmap
2015-10-24 14:34:12,363 DEBUG setting property wordWrap
2015-10-24 14:34:12,363 DEBUG push QLabel textLabel2
2015-10-24 14:34:12,363 DEBUG pop widget QLabel textLabel2
2015-10-24 14:34:12,363 DEBUG new topwidget <PyQt5.QtWidgets.QDialog object at 0x7fd6799e39d8>
2015-10-24 14:34:12,363 DEBUG setting property text
2015-10-24 14:34:12,363 DEBUG setting property wordWrap
2015-10-24 14:34:12,363 DEBUG push QLabel label_conffile
2015-10-24 14:34:12,363 DEBUG pop widget QLabel label_conffile
2015-10-24 14:34:12,363 DEBUG new topwidget <PyQt5.QtWidgets.QDialog object at 0x7fd6799e39d8>
2015-10-24 14:34:12,363 DEBUG setting property text
2015-10-24 14:34:12,363 DEBUG push QPushButton keep_button
2015-10-24 14:34:12,363 DEBUG pop widget QPushButton keep_button
2015-10-24 14:34:12,363 DEBUG new topwidget <PyQt5.QtWidgets.QDialog object at 0x7fd6799e39d8>
2015-10-24 14:34:12,363 DEBUG setting property text
2015-10-24 14:34:12,363 DEBUG push QPushButton replace_button
2015-10-24 14:34:12,363 DEBUG pop widget QPushButton replace_button
2015-10-24 14:34:12,363 DEBUG new topwidget <PyQt5.QtWidgets.QDialog object at 0x7fd6799e39d8>
2015-10-24 14:34:12,364 DEBUG push QTextEdit textview_conffile
2015-10-24 14:34:12,364 DEBUG pop widget QTextEdit textview_conffile
2015-10-24 14:34:12,364 DEBUG new topwidget <PyQt5.QtWidgets.QDialog object at 0x7fd6799e39d8>
2015-10-24 14:34:12,364 DEBUG pop layout QGridLayout gridlayout
2015-10-24 14:34:12,364 DEBUG pop widget QDialog dialog_conffile
2015-10-24 14:34:12,364 DEBUG new topwidget None
2015-10-24 14:34:12,365 ERROR not handled exception in KDE frontend:
Traceback (most recent call last):

  File "/tmp/ubuntu-release-upgrader-7bai3dvc/wily", line 8, in <module>
    sys.exit(main())

  File "/tmp/ubuntu-release-upgrader-7bai3dvc/DistUpgrade/DistUpgradeMain.py", line 240, in main
    if app.run():

  File "/tmp/ubuntu-release-upgrader-7bai3dvc/DistUpgrade/DistUpgradeController.py", line 1837, in run
    return self.fullUpgrade()

  File "/tmp/ubuntu-release-upgrader-7bai3dvc/DistUpgrade/DistUpgradeController.py", line 1802, in fullUpgrade
    if not self.doDistUpgrade():

  File "/tmp/ubuntu-release-upgrader-7bai3dvc/DistUpgrade/DistUpgradeController.py", line 1143, in doDistUpgrade
    res = self.cache.commit(fprogress,iprogress)

  File "/tmp/ubuntu-release-upgrader-7bai3dvc/DistUpgrade/DistUpgradeCache.py", line 267, in commit
    apt.Cache.commit(self, fprogress, iprogress)

  File "/usr/lib/python3/dist-packages/apt/cache.py", line 501, in commit
    # which is less than optimal!

  File "/usr/lib/python3/dist-packages/apt/cache.py", line 465, in install_archives

  File "/tmp/ubuntu-release-upgrader-7bai3dvc/DistUpgrade/DistUpgradeView.py", line 234, in run
    res = os.WEXITSTATUS(self.wait_child())

  File "/tmp/ubuntu-release-upgrader-7bai3dvc/DistUpgrade/DistUpgradeViewKDE.py", line 451, in wait_child
    self.update_interface()

  File "/tmp/ubuntu-release-upgrader-7bai3dvc/DistUpgrade/DistUpgradeViewKDE.py", line 430, in update_interface
    InstallProgress.update_interface(self)

  File "/usr/lib/python3/dist-packages/apt/progress/base.py", line 252, in update_interface
    self.conffile(match.group(1), match.group(2))

  File "/tmp/ubuntu-release-upgrader-7bai3dvc/DistUpgrade/DistUpgradeViewKDE.py", line 339, in conffile
    self.confDialogue.show_difference_button.clicked.connect(self.showConffile())

TypeError: argument 1 has unexpected type 'NoneType'

2015-10-24 14:34:12,366 DEBUG running apport_crash()
2015-10-24 14:34:12,393 DEBUG enabling apt cron job

Related branches

Revision history for this message
amichair (amichai2) wrote :

Addition: after killing the frozen installer gui and running 'sudo dpkg --configure -a' in terminal to continue the installation manually, I indeed got the prompt about /etc/tomcat7/server.xml and whether I want the maintainer's version, the current version, to view diff, etc.

However, after selecting 'n' to keep the currently installed version, a whole new full-screen dialog immediately showed up (full-terminal, that is, i.e. an ascii dialog within the terminal window, not another GUI desktop window) asking me basically the same question again but with a couple more available options (3-way merge etc.).

Maybe that's what trips up the installer - the configuration file choices prompt being presented twice in a row.

I hope this helps.

Philip Muškovac (yofel)
affects: ubiquity (Ubuntu) → ubuntu-release-upgrader (Ubuntu)
tags: added: kubuntu wily
Revision history for this message
Launchpad Janitor (janitor) wrote :

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

Changed in ubuntu-release-upgrader (Ubuntu):
status: New → Confirmed
Changed in ubuntu-release-upgrader (Ubuntu):
importance: Undecided → Critical
Changed in ubuntu-release-upgrader (Ubuntu):
importance: Critical → High
Revision history for this message
Xavier Aragon (xarax-lp) wrote :

The reason of the problem is visible in the python backtrace of the bug description, where line 339 of DistUpgradeViewKDE.py causes a TypeError:

    File "/tmp/ubuntu-release-upgrader-7bai3dvc/DistUpgrade/DistUpgradeViewKDE.py", line 339, in conffile
        self.confDialogue.show_difference_button.clicked.connect(self.showConffile())
   TypeError: argument 1 has unexpected type 'NoneType'

That python code line should most probably be:

        self.confDialogue.show_difference_button.clicked.connect(self.showConffile)

i.e. the argument of the connect method should be the self.showConffile method itself, not the return value of that method (I suppose it returns None, which triggers the TypeError).

The problem comes from bug #1423279, which fixed a syntax error, but apparently introduced this other error. The problem has been reported also in bug #1448380, which has been marked fixed for some reason that I fail to understand.

summary: - installer crashed on custom configuration file dialog
+ release upgrade crashed on custom configuration file dialog
Revision history for this message
Ubuntu QA Website (ubuntuqa) wrote :

This bug has been reported on the Ubuntu ISO testing tracker.

A list of all reports related to this bug can be found here:
http://iso.qa.ubuntu.com/qatracker/reports/bugs/1509655

tags: added: iso-testing
Changed in ubuntu-release-upgrader (Ubuntu Xenial):
status: Confirmed → In Progress
assignee: nobody → Brian Murray (brian-murray)
Revision history for this message
Brian Murray (brian-murray) wrote :

Thanks for the detailed research Xavier.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ubuntu-release-upgrader - 1:16.04.10

---------------
ubuntu-release-upgrader (1:16.04.10) xenial; urgency=medium

  [ Tim Lunn ]
  * DistUpgrade/DistUpgradeController.py: set a logind sleep inhibitor
  * DistUpgrade/DistUpgradeFetcher{KDE}.py: remove calls to inhibit_sleep
    logind inhibitor will be released when os.exec is called as we lose
    reference on the fd (LP: #1566141)

  [ Brian Murray ]
  * DistUpgrade/DistUpgradeViewKDE.py: Really fix call to showConffile.
    (LP: #1509655)

 -- Brian Murray <email address hidden> Thu, 07 Apr 2016 15:26:25 -0700

Changed in ubuntu-release-upgrader (Ubuntu Xenial):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

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