[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Dpkg fails to install certain packages



On Mon, 1 Feb 1999, Jake Griesbach wrote:

> Dpkg fails to install certain packages, due to gzip -dc returning an
> error.  This seems prominent in more than a few current packages.

[...]

> gzip: stdout: Broken pipe
> dpkg-deb: subprocess gzip -dc returned error exit status 1
> dpkg: error processing debian/dists/unstable/main/binary-i386/devel/libgnome0_0.30.1-5.deb (--install):
>  subprocess dpkg-deb --fsys-tarfile returned error exit status 2
> Errors were encountered while processing:
>  debian/dists/unstable/main/binary-i386/devel/libgnome0_0.30.1-5.deb
> DPKG ERROR

I'm replying directly since I the bug number hasn't come through yet.
I'll forward my own message, or a reply to it, to the bug when it gets
there.

I am also seeing this error.  And I'm seeing similar errors with
dpkg-source -x and dpkg-source -b

I tracked it down as follows:

It's something to do with this sub in dpkg-source:

sub reapgzip {
#print STDERR "reapgzip $_[0]\n";
    $cgz == waitpid($cgz,0) || &syserr("wait for gzip");
    !$? || ($gzipsigpipeok && WIFSIGNALED($?) && WTERMSIG($?)==SIGPIPE) ||
        subprocerr("gzip");
    close(GZIPFILE);
}

$gzipsigpipeok is true; WIFSIGNALED($?) is not true. WTERMSIG I didn't
check (sorry!).

So something funny seems to be happening with the disposition of the
SIGPIPE.

I am guessing that the error in dpkg itself is broadly the same.

> 
> dpkg version is 1.4.1
> dpkg-ftp version is 1.6.1
> gzip version is 1.2.4-29
> 
> kernel version: 2.2.1
> libc-2.0.7.so
> perl version: 5.004.04-6

I'm using kernel 2.0.33, so it's not that.
I'm not using dpkg-ftp at all, so it's not that.

If it's a signalling problem, then I'm guessing it's a libc problem?  But
I don't really understand what's going on at all.

An example as I see it in dpkg-source:

jules@pear% dpkg-source -b marble3d-0.0.1 marble3d_0.0.1.orig.tar.gz
5:50PM
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
dpkg-source: building marble3d using existing marble3d_0.0.1.orig.tar.gz

gunzip: stdout: Broken pipe
dpkg-source: failure: gzip gave error exit status 1

There's nothing wrong with the package - if I dpkg-source from an unpacked
orig source, it builds fine.

It's only the gzipped source it has trouble with..

However, the worst thing is, it's not reproducible.

Immediately after I generated the error above, I opened a fresh terminal
window, and ran exactly the same command, from exactly the same directory,
and it works as expected:

jules@pear% dpkg-source -b marble3d-0.0.1 marble3d_0.0.1.orig.tar.gz
5:53PM
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
dpkg-source: building marble3d using existing marble3d_0.0.1.orig.tar.gz
dpkg-source: building marble3d in marble3d_0.0.1-1.diff.gz
dpkg-source: building marble3d in marble3d_0.0.1-1.dsc


So, look at this:  This is in two different Eterms:

Number 1:
-------------
jules@pear% pwd
5:57PM
/home/jules/debian/packaging
jules@pear% env
5:57PM
HOSTNAME=pear
USER=jules
MACHTYPE=i686
DISPLAY=:1.0
LOGNAME=jules
SHLVL=2
SHELL=/usr/bin/zsh
HOSTTYPE=i486
OSTYPE=linux
HOME=/home/jules
TERM=xterm
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
_=/usr/bin/env
SESSION_MANAGER=local/pear:/tmp/.ICE-unix/1620,tcp/pear:2109
ETERM_THEME_ROOT=/home/jules/.Eterm/themes/Eterm
COLORFGBG=15;default;0
WINDOWID=50331650
COLORTERM=Eterm-pixmap
PWD=/home/jules/debian/packaging
jules@pear% dpkg-source -b marble3d-0.0.1 marble3d_0.0.1.orig.tar.gz
5:57PM
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
dpkg-source: building marble3d using existing marble3d_0.0.1.orig.tar.gz

gunzip: stdout: Broken pipe
dpkg-source: failure: gzip gave error exit status 1
-------------

Number 2:
-------------
jules@pear% pwd
5:57PM
/home/jules/debian/packaging
jules@pear% env
5:58PM
HOSTNAME=pear
USER=jules
MACHTYPE=i686
DISPLAY=:1.0
LOGNAME=jules
SHLVL=3
SHELL=/usr/bin/zsh
HOSTTYPE=i486
OSTYPE=linux
HOME=/home/jules
TERM=xterm
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
_=/usr/bin/env
SESSION_MANAGER=local/pear:/tmp/.ICE-unix/1620,tcp/pear:2109
EVERSION=0.15.0
EROOT=/usr/share/enlightenment
EPID=1652
ETHEME=
PWD=/home/jules
ETERM_THEME_ROOT=/home/jules/.Eterm/themes/Eterm
COLORFGBG=15;default;0
WINDOWID=83886082
COLORTERM=Eterm-pixmap
jules@pear% dpkg-source -b marble3d-0.0.1 marble3d_0.0.1.orig.tar.gz
5:58PM
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
no utmp entry available, using value of LOGNAME ("jules") at
/usr/lib/dpkg/controllib.pl line 40.
dpkg-source: building marble3d using existing marble3d_0.0.1.orig.tar.gz
dpkg-source: building marble3d in marble3d_0.0.1-1.diff.gz
dpkg-source: building marble3d in marble3d_0.0.1-1.dsc
------------

The only difference between these two Eterms is that one has been around
longer - it's been up since before my windowmanager has, and has init as
its parent.  That is the first one, the one which breaks.  The second
Eterm, which was launched by my window-manager, is fine.

There is something very odd going on here.

Inserting another level of subshell, by using

zsh -c 'dpkg-source...'

makes no difference to either Eterm.  Neither does using bash -c.

There are also some signal handling oddities around - on occasion, I
haven't been able to suspend things.  I can't reproduce that just now.

It all points to libc weirdness for me..

Jules
 
/----------------+-------------------------------+---------------------\
|  Jelibean aka  | jules@jellybean.co.uk         |  6 Evelyn Rd	       |
|  Jules aka     | jules@debian.org              |  Richmond, Surrey   |
|  Julian Bean   | jmlb2@hermes.cam.ac.uk        |  TW9 2TF *UK*       |
+----------------+-------------------------------+---------------------+
|  War doesn't demonstrate who's right... just who's left.             |
|  When privacy is outlawed... only the outlaws have privacy.          |
\----------------------------------------------------------------------/



Reply to: