[Bug 1780501] Re: Traceback calling Vte.Terminal.feed_child()

Brian Murray brian at ubuntu.com
Fri Aug 3 19:59:11 UTC 2018


On Fri, Aug 03, 2018 at 11:06:38AM -0000, Egmont Koblinger wrote:
> Hey guys,
> 
> Hope I'm not speaking up too late.
> 
> It's indeed a bit nasty situation we're in, and I am also a little bit
> responsible for this. When updating the PCRE fixes for 0.52 I focused on
> the actual work, and ignored (just ported blindly in "autopilot" mode)
> the annotation changes. I should've stopped and asked "what the heck is
> this?". Sorry for that!
> 
> In the mean time vte itself is also somewhat responsible for the mess by
> silently fixing its python bindings in backwards incompatible ways.
> (Mainstream 0.52 fixed feed_child() not to take a third parameter, it
> was broken before and required an explicit length. The same happened to
> feed_child_binary() in 0.46 which may have been the reason for someone
> to (accidentally or intentionally) sneak in the revert of this to the
> PCRE patch.)
> 
> So a "faulty" vte update has already been released for bionic, breaking
> 4 packages we're aware of (ubuntu-release-upgrader, terminator, guake,
> cubic). Maybe there's one or two more at most, but I don't think so.

This "faulty" vte update is a regression though in that something which
used to work, calling feed_child() with three parameters, no longer
does and causes other software to break. This is not in line with the
Ubuntu Stable Release Updates policy. Additionally, we don't know what
other software, packaged or not, would be broken by this change and that
is why its best to keep what we had when Ubuntu 18.04 was released.

> On the other hand, this change "fixes" vte to be like mainstream,
> which is a huge advantage for anyone wishing to manually install
> vte-based software.
 
> I assume you don't intend to carry these changes forever. Brian Murray
> from comment 10:
> 
> > I agree that having downstream API differences is bad and that it
> shouldn't be fixed for cosmic
> 
> I can only parse this sentence assuming a typo: "*should* be fixed for
> cosmic", am I right, or what am I missing?

I mean that we should leave vte2.91 alone for cosmic.

> ubuntu-release-upgrader has already been fixed to cope with either
> signatures if I understand correctly, and the other three will also need
> to be fixed eventually.

They will need to fixed but that should happen to the packages in cosmic
and not require SRUs for an unknown quantity of packages Ubuntu 18.04.

> At this point, if it was dozens of packages that broke, I'd agree with
> reverting the vte change. If vte received a broken change, I'd agree
> with reverting it.
> 
> However, vte actually received a fix, which happened to break 4 apps
> that were strictly speaking broken (to adjust to broken vte), and
> they'll need to get fixed anyway.
> 
> In this situation I find it much clearer to escape forward rather than
> retreat, and just fix those 4 broken packages. For all of them it's a
> trivial change, you don't even need to handle two different APIs with a
> try-expect, you can just go for the final correct version (two
> parameters) straight away.

> I understand that the overhead right now is somewhat bigger for
> releasing 4 updates rather than 1. However, it results in a much clearer
> situation that gets rid of the differences from mainstream, more easily
> supportable for the forthcoming almost 5 years and is much better for
> any user who hack around on their system (i.e. install vte-based apps
> from various sources). I do believe that – cleanliness and better
> overall quality of bionic with this approach over the other put aside –
> it's even cheaper to fix those 4 packages now, than to maintain and
> support this crazy oddness for the rest of bionic's lifetime.

Could you elaborate as to what cost you think there is to maintaining
this oddness in Ubuntu 18.04?

--
Brian Murray

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to ubuntu-release-upgrader in
Ubuntu.
https://bugs.launchpad.net/bugs/1780501

Title:
  Traceback calling Vte.Terminal.feed_child()

Status in ubuntu-release-upgrader package in Ubuntu:
  Fix Released
Status in vte2.91 package in Ubuntu:
  Won't Fix
Status in ubuntu-release-upgrader source package in Bionic:
  Invalid
Status in vte2.91 source package in Bionic:
  Fix Committed

Bug description:
  [Test Case]
  1) Ensure the following packages from -updates (version 0.52.2-1ubuntu1~18.04.1) are installed on an Ubuntu 18.04 system: gir1.2-vte-2.91 libvte-2.91-0 libvte-2.91-common
  2) Modify /etc/issue e.g. I changed 18.04 to 18.04.2
  3) Ensure /etc/update-manager/release-upgrades contains "Prompt=normal"
  4) Run /usr/lib/ubuntu-release-upgrader/check-new-release-gtk -d
  5) When prompted about replacing "the customized configuration file '/etc/issue'" click Keep
  6) Observe a traceback in Vte.Terminal.feed_child()

  After installing the new version of vte2.91 in -proposed you should no
  longer receive a Traceback when clicking keep during the upgrade
  process.

  [Regression Potential]
  Per laney: "The regression potential is that I messed up the upload and everything using feed* breaks."

  It'd probably be good to test guake too since it uses feed_child().

  [Original Description]
  I was upgrading from Bionic to Cosmic when I received a conffile prompt regarding /etc/update-initramfs/initramfs.conf, I clicked keep and then saw this Traceback:

  Original exception was:
  Traceback (most recent call last):
    File "/tmp/ubuntu-release-upgrader-filpk342/cosmic", line 8, in <module>
      sys.exit(main())
    File "/tmp/ubuntu-release-upgrader-filpk342/DistUpgrade/DistUpgradeMain.py", line 238, in main
      if app.run():
    File "/tmp/ubuntu-release-upgrader-filpk342/DistUpgrade/DistUpgradeController.py", line 1949, in run
      return self.fullUpgrade()
    File "/tmp/ubuntu-release-upgrader-filpk342/DistUpgrade/DistUpgradeController.py", line 1912, in fullUpgrade
      if not self.doDistUpgrade():
    File "/tmp/ubuntu-release-upgrader-filpk342/DistUpgrade/DistUpgradeController.py", line 1248, in doDistUpgrade
      res = self.cache.commit(fprogress,iprogress)
    File "/tmp/ubuntu-release-upgrader-filpk342/DistUpgrade/DistUpgradeCache.py", line 293, in commit
      apt.Cache.commit(self, fprogress, iprogress)
    File "/usr/lib/python3/dist-packages/apt/cache.py", line 606, in commit
      pm = apt_pkg.PackageManager(self._depcache)
    File "/usr/lib/python3/dist-packages/apt/cache.py", line 569, in install_archives
      # compat with older API
    File "/tmp/ubuntu-release-upgrader-filpk342/DistUpgrade/DistUpgradeView.py", line 229, in run
      res = os.WEXITSTATUS(self.wait_child())
    File "/tmp/ubuntu-release-upgrader-filpk342/DistUpgrade/DistUpgradeViewGtk3.py", line 340, in wait_child
      self.update_interface()
    File "/tmp/ubuntu-release-upgrader-filpk342/DistUpgrade/DistUpgradeViewGtk3.py", line 347, in update_interface
      InstallProgress.update_interface(self)
    File "/usr/lib/python3/dist-packages/apt/progress/base.py", line 252, in update_interface
      if err.errno != errno.EAGAIN and err.errno != errno.EWOULDBLOCK:
    File "/tmp/ubuntu-release-upgrader-filpk342/DistUpgrade/DistUpgradeViewGtk3.py", line 276, in conffile
      self.term.feed_child("n\n", -1)
  TypeError: Vte.Terminal.feed_child() takes exactly 2 arguments (3 given)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/1780501/+subscriptions



More information about the foundations-bugs mailing list