installation stopped by an random exception from mark_install() in Cache class of python3-apt

Bug #1891599 reported by Alex Tu on 2020-08-14
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OEM Priority Project
Critical
Alex Tu
ubiquity (Ubuntu)
Undecided
Unassigned

Bug Description

Exception in the installation

Aug 12 19:26:59 ubuntu /plugininstall.py: Exception during installation:
Aug 12 19:26:59 ubuntu /plugininstall.py: Traceback (most recent call last):
Aug 12 19:26:59 ubuntu /plugininstall.py: File "/usr/share/ubiquity/plugininstall.py", line 235, in run
Aug 12 19:26:59 ubuntu /plugininstall.py: self.install_extras()
Aug 12 19:26:59 ubuntu /plugininstall.py: File "/usr/share/ubiquity/plugininstall.py", line 1212, in install_extras
Aug 12 19:26:59 ubuntu /plugininstall.py: self.do_install(filtered_extra_packages)
Aug 12 19:26:59 ubuntu /plugininstall.py: File "/usr/lib/ubiquity/ubiquity/install_misc.py", line 941, in do_install
Aug 12 19:26:59 ubuntu /plugininstall.py: mark_install(cache, pkg)
Aug 12 19:26:59 ubuntu /plugininstall.py: File "/usr/lib/ubiquity/ubiquity/install_misc.py", line 553, in mark_install
Aug 12 19:26:59 ubuntu /plugininstall.py: raise InstallStepError(
Aug 12 19:26:59 ubuntu /plugininstall.py: ubiquity.install_misc.InstallStepError: Unable to install 'libgbm1' due to conflicts.

This happen in oem project because we have lots pkg to upgrade during installation because the design of factory process need it.

As package list have certain dependency, and the the order that we get the pkg from the python set object is not good for underlying apt engine, then exception will raise.

A workaround fix is move those failed debs to next iteration and the fix test pass as we try it in installation for like 50 times.

MP: https://code.launchpad.net/~ycheng-twn/ubuntu/+source/ubiquity/+git/ubiquity/+merge/390009

Alex Tu (alextu) wrote :

for 1. improve the fault tolerance of Ubiquity while it calling external library.

We are trying to have severial times retry in ubiquity before thow out the exception.
And the installation testing is in progress.

Changed in ubiquity (Ubuntu):
assignee: nobody → Alex Tu (alextu)
assignee: Alex Tu (alextu) → nobody
Changed in oem-priority:
assignee: nobody → Alex Tu (alextu)
importance: Undecided → Critical
tags: added: oem-priority originate-from-1891118 somerville
Alex Tu (alextu) wrote :

I'm trying to upload log, but keep getting launchpad opps.
(Error ID: OOPS-6b4d02cb9bb92efa8664d821b400a951)
So, I will try uploading syslog later.

Alex Tu (alextu) on 2020-08-18
tags: added: originate-from-1891603
Yuan-Chen Cheng (ycheng-twn) wrote :
Changed in oem-priority:
assignee: Alex Tu (alextu) → Yuan-Chen Cheng (ycheng-twn)
description: updated
description: updated
Yuan-Chen Cheng (ycheng-twn) wrote :

the patch that passed 50 installtion

Yuan-Chen Cheng (ycheng-twn) wrote :

as this happens, I found the real exception is give by

  File "/usr/lib/python3/dist-packages/apt/package.py", line 1549, in mark_install
    fixer.resolve(True)
apt_pkg.Error: E:Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

the package cause this error is: libgbm1

I found as it happens, if it failed:

===
# apt-get install -s evolution-data-server libgbm1
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 evolution-data-server : Depends: libedataserverui-1.2-2 (= 3.36.4-0ubuntu1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
===

However, If I
"apt-get install -s evolution-data-server libgbm1 libegl-mesa0"

Then there is no error

Yuan-Chen Cheng (ycheng-twn) wrote :

the dpkg -l as this happens

Yuan-Chen Cheng (ycheng-twn) wrote :

the pkg list we want to mark install as we run to there.

Changed in oem-priority:
status: New → Confirmed
Yuan-Chen Cheng (ycheng-twn) wrote :

Note: the patch will not change the flow if not exception happens in

mark_install(cache, pkg)

Given so, I think there won't have regression if we apply this.

description: updated
description: updated

The attachment "install_misc_py.patch" seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team.

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

tags: added: patch
description: updated
Changed in oem-priority:
assignee: Yuan-Chen Cheng (ycheng-twn) → nobody
Changed in oem-priority:
assignee: nobody → Alex Tu (alextu)
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers