[Bug 601732] Re: postinst using both update-inetd and debconf hangs on first install

Evan Broder evan at ebroder.net
Thu Nov 25 07:30:35 UTC 2010


Installing approx and openbsd-inetd no longer hangs with update-inetd
4.36ubuntu0.1

** Tags added: verification-done
** Tags removed: verification-needed

-- 
postinst using both update-inetd and debconf hangs on first install
https://bugs.launchpad.net/bugs/601732
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is a direct subscriber.

Status in “approx” package in Ubuntu: Invalid
Status in “cernlib” package in Ubuntu: Invalid
Status in “update-inetd” package in Ubuntu: Fix Released
Status in “approx” source package in Lucid: Invalid
Status in “cernlib” source package in Lucid: Invalid
Status in “update-inetd” source package in Lucid: New
Status in “approx” source package in Maverick: Invalid
Status in “cernlib” source package in Maverick: Invalid
Status in “update-inetd” source package in Maverick: Fix Committed
Status in “cernlib” package in Debian: New

Bug description:
Binary package hint: cernlib

update-inetd's Perl module will start, stop, or restart the installed inetd as appropriate, by calling "invoke-rc.d $service $action". However, if a postinst calling update-inetd is also using the debconf shell script module, it will have an open fd 3 which it uses to communicate with debconf.

openbsd-inetd, at least, doesn't clean up file descriptors when it starts, meaning it keeps the fd 3 which was opened by the shell script, then passed to update-inetd, then passed to invoke-rc.d, then passed to inetd.

The debconf frontend waits for that fd to close to indicate that the postinst is finished running. Since inetd has the fd open forever, that doesn't happen, and the postinst hangs.

IMPACT: Installing a package that uses update-intd and debconf when inetd previously had no jobs configured will hang.

DEVELOPMENT: This was fixed in update-inetd 4.38 by having update-inetd's Perl module explicitly close fd 3 when it starts inetd.

PATCH: Available in the associated branches (~broder/ubuntu/maverick/update-inetd/fix-601732 and ~broder/ubuntu/lucid/update-inetd/fix-601732). In both cases, the fix is a direct, unmodified backport of the patch from update-inetd 4.38. It applied to both without any fuzz.

INSTRUCTIONS:
 1. Make sure that inetd is stopped, and has no services configured.
 2. Install pawserv or approx or any package that uses both inetd and debconf.
 3. Observe hang (or hopefully lack thereof)

REGRESSION: Should be limited. The diff adds several lines of explanatory comments, but only changes one line of code in a pretty straightforward way.

========
Old summary: package pawserv 2006.dfsg.2-14ubuntu2 failed to install/upgrade: postinst hang in /usr/bin/perl -w /usr/share/debconf/frontend /var/lib/dpkg/info/pawserv.postinst configure

Old description [changed by broder]:

During postinst 'pawserv.postinst' become a zombie process - further installation/configuration of packages (using synaptic) has been possible by killing (15) 'frontend' process.

ProblemType: Package
DistroRelease: Ubuntu 10.04
Package: pawserv 2006.dfsg.2-14ubuntu2
ProcVersionSignature: Ubuntu 2.6.32-23.37-generic 2.6.32.15+drm33.5
Uname: Linux 2.6.32-23-generic x86_64
NonfreeKernelModules: nvidia
Architecture: amd64
Date: Mon Jul  5 02:25:10 2010
ErrorMessage: subprocess installed post-installation script killed by signal (Terminated)
InstallationMedia: Ubuntu 10.04 LTS "Lucid Lynx" - Release amd64 (20100429)
SourcePackage: cernlib
Title: package pawserv 2006.dfsg.2-14ubuntu2 failed to install/upgrade: subprocess installed post-installation script killed by signal (Terminated)







More information about the Ubuntu-sponsors mailing list