[Bug 919802] [NEW] qapt/dpkg hang (pipe loop?) when updating

Dave Gilbert ubuntu at treblig.org
Sat Jan 21 20:11:41 UTC 2012


Public bug reported:

I'm on Precise alpha and do an update every few days - but I've seen this bug on older versions; just followed it
a bit more.

I click install updates in Muon, and it goes off and downloads and sets
off installing - but come back to it later to find it stuck; it says
Installing Updates 37% - and doen't move further.

Looking I can see a dpkg:


root     21377 10759  1 19:25 pts/19   00:00:30 /usr/bin/dpkg --status-fd 77 --unpack --auto-deconfigure /var/cache/apt/archives/python3_3.2.2-1_all.deb /var/cache/apt/archives/python3-minimal_3.2.2-1_all.deb /var/cache/apt/archives/lsb-release_4.0-0ubuntu19_amd64.deb /var/cache/apt/archives/ifupdown_0.7~beta2ubuntu3_amd64.deb /var/cache/apt/archives/ubuntu-minimal_1.257_amd64.deb ...........long list of more packages.....


strace'ing the dpkg I find it's stuck in a write to stdout:

write(1, "Preparing to replace libstdc++6-"..., 156

1 is a pts:
lrwx------ 1 root root 64 Jan 21 19:49 1 -> /dev/pts/19

so hmm - not sure how to find the other end of that, but let's look at
dpkg's parent (10759):


root     10759  9734  0 19:21 pts/18   00:00:00 /usr/bin/qaptworker
It's got /dev/ptmx open, but I'm not sure how to tell if it's supposed to be reading from /dev/pts/19
strace -p on that qapt shows:

write(1, "Unpacking replacement libstrigiq"..., 1024^C <unfinished ...>

(Which is curious since that's behind the dpkg...)

lrwx------ 1 root root 64 Jan 21 19:49 1 -> /dev/pts/18

hmm, yet another pts - ok, so what about it's parent?
10759's parent is 9734:

root      9734     1  0 19:10 ?        00:00:15 /usr/bin/qaptworker

9734's strace looks like:
wait4(10759, 0x7fffde810394, WNOHANG, NULL) = 0
read(70, 0x7fffde810300, 1)             = -1 EAGAIN (Resource temporarily unavailable)
nanosleep({0, 33333000}, NULL)          = 0
wait4(10759, 0x7fffde810394, WNOHANG, NULL) = 0

and fd 70 is:
lr-x------ 1 root root 64 Jan 21 19:49 70 -> pipe:[4136896]

doing:


ls -l /proc/*/fd/*| grep 4136896

shows :

l-wx------ 1 root   root   64 Jan 21 19:49 /proc/10759/fd/73 -> pipe:[4136896]
lr-x------ 1 root   root   64 Jan 21 19:49 /proc/9734/fd/70 -> pipe:[4136896]
l-wx------ 1 root   root   64 Jan 21 19:49 /proc/9734/fd/73 -> pipe:[4136896]

note that's 10759 again.
So I think we've got a loop within qapt; dpkg tries to write it's status to a pty that I *think* qapt(10759) is on the other end of; unfortunately 10759 is blocked trying to write it's stdout to a pty that I *think* qapt(9734) is on the other end of; and qapt(9734) is blocked trying to write to the pipe that only 10759 is reading from - deadlock!

I guess it only triggers sometimes depending on how full each buffer is
and when each process gets back to it's poll loop.

Dave

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: libqapt-runtime 1.2.80-0ubuntu1
ProcVersionSignature: Ubuntu 3.2.0-8.15-generic 3.2.0
Uname: Linux 3.2.0-8-generic x86_64
ApportVersion: 1.91-0ubuntu1
Architecture: amd64
CheckboxSubmission: f2d10bd9f943a85b486a282e7840a570
CheckboxSystem: 0531969bcfd4f03af7405c98dc94a948
Date: Sat Jan 21 19:59:44 2012
InstallationMedia: Ubuntu 9.10 "Karmic Koala" - Release amd64 (20091027)
ProcEnviron:
 LANGUAGE=
 PATH=(custom, user)
 LANG=en_GB.UTF-8
 SHELL=/bin/bash
SourcePackage: qapt
UpgradeStatus: Upgraded to precise on 2011-12-03 (49 days ago)

** Affects: qapt (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug precise

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

Title:
  qapt/dpkg hang (pipe loop?) when updating

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




More information about the kubuntu-bugs mailing list