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

Re: Bug#278417: libxt6 4.3.0.dfsg.1-8 pre-installation script fails



reassign 278417 debconf
retitle 278417 debconf: loading Text::Iconv lazily can cause failures on upgrades from woody
# Justification: can break upgrades from woody to sarge
severity 278417 serious
thanks

[debian-perl and debian-release CCed because this is a Perl-related problem
that, as far as I can tell, is a release critical bug we cannot just remove
packages to fix.  My apologies if my judgement is in error.]

Okay, this is somewhat complex, and turns out to have little to do with
libxt6.  Andrew Suffield, Joey Hess, and I discussed this on IRC.

Much of the following description comes from Andrew.

  libxt6 uses debconf in its preinst script.  Debconf in turn uses the Perl
  module Text::Iconv (to perform character set conversion for the
  presentation of appropriately localized template choices and
  descriptions, perhaps among other functions).  Text::Iconv is an XS
  module in the version of Perl in sarge, meaning that it's written in C
  and is therefore an ELF object linked in by the Perl interpreter when
  needed.  By default, Perl performs "lazy" loading of XS modules -- that
  is, it assumes that all the required symbols will be resolved without
  actually checking.

  Essentially, the problem is that loading Text::Iconv lazily isn't a
  reliable test of whether it can be loaded.  The linker will happily commit
  to being able to load it, but it turns out that actually it can't (because
  the right version hasn't been unpacked yet).  And then the process gets
  shot down.

  As a workaround, set PERL_DL_NONLAZY=1 before upgrading.  That should pin
  it down.

  (To simulate, unpack libtext-iconv-perl from sarge on a woody host; don't
  try to configure it.)

  Unfortunately, there does not appear to be a way to programmatically turn
  off lazy module loading.  That is, we can't just add a line of code to
  Debconf that says "don't do lazy loading".

  Worse still, the process environment is not completely under our control.
  Debconf's confmodule, which is sourced by shell scripts that use debconf,
  might be able to set that environment variable, but maintainer scripts
  written in Perl would not have this option available to them.  (ELF
  maintainer scripts, like bash's preinst, could use putenv() if necessary,
  I suppose.)

The reason libxt6 triggers this is because it uses debconf in its preinst
script.  This, however, is not forbidden, and should work.  Any other
package that uses debconf in its preinst script could trigger the same
behavior.

I am not a Perl genius -- Joey Hess and Andrew Suffield are far more
knowledgeable about it than I -- but if someone has questions about why I
am reassigning this bug, please ask and I will answer them as best I can.

Original report follows.

On Tue, Oct 26, 2004 at 10:53:23PM +0200, Hans Freitag wrote:
> Package: libxt6
> Version: 4.3.0.dfsg.1-4
> Severity: normal
> 
> While upgrading from Woody to Sid the pre-installation script of libxt6
> failes. apt-get gives me the following output:
> 
> ------------------schnipp--------------------------------------
> toughbook:~# apt-get -f install
> 
> Reading Package Lists... Done
> Building Dependency Tree... Done
> Correcting dependencies... Done
> The following extra packages will be installed:
>   liblocale-gettext-perl libpng12-0 libx11-6 libxcursor1 libxt6 libxv1
> perl-base perl-tk xbase-clients xlibmesa-dri xlibmesa-gl xlibmesa-glu
>   xlibmesa3 xlibs-data 
> The following NEW packages will be installed:
>   liblocale-gettext-perl libpng12-0 libx11-6 libxcursor1 libxt6 libxv1
> xlibmesa-dri xlibmesa-gl xlibmesa-glu xlibs-data 
> 4 packages upgraded, 10 newly installed, 0 to remove and 250  not
> upgraded.
> 50 packages not fully installed or removed.
> Need to get 0B/13.1MB of archives. After unpacking 19.1MB will be used.
> /usr/bin/perl: relocation error:
> /usr/lib/perl5/auto/Text/Iconv/Iconv.so: undefined symbol:
> Perl_Gthr_key_ptr
> (Reading database ... 34002 files and directories currently installed.)
> Unpacking libxt6 (from .../libxt6_4.3.0.dfsg.1-8_i386.deb) ...
> /usr/bin/perl: relocation error:
> /usr/lib/perl5/auto/Text/Iconv/Iconv.so: undefined symbol:
> Perl_Gthr_key_ptr
> dpkg: error processing
> /var/cache/apt/archives/libxt6_4.3.0.dfsg.1-8_i386.deb (--unpack):
>  subprocess pre-installation script returned error exit status 127
> Errors were encountered while processing:
>  /var/cache/apt/archives/libxt6_4.3.0.dfsg.1-8_i386.deb
> E: Sub-process /usr/bin/dpkg returned an error code (1)
> toughbook:~# 
> ----------------------schnapp------------------------------------
> 
> Maybe this bug is an Error in libtext-iconv-perl I don't know yet, but
> it seems that there is a problem somewhere. 
> 
> 
> -- System Information:
> Debian Release: testing/unstable
>   APT prefers unstable
>   APT policy: (500, 'unstable'), (1, 'experimental')
> Architecture: powerpc (ppc)
> Kernel: Linux 2.6.7
> Locale: LANG=en_IE@euro, LC_CTYPE=en_IE@euro
> 
> Versions of packages libxt6 depends on:
> ii  libc6                     2.3.2.ds1-12   GNU C Library: Shared libraries an
> ii  libice6                   4.3.0.dfsg.1-4 Inter-Client Exchange library
> ii  libsm6                    4.3.0.dfsg.1-4 X Window System Session Management
> ii  xlibs                     4.3.0.dfsg.1-1 X Window System client libraries m
> 
> -- no debconf information

-- 
G. Branden Robinson                |     If the jury can count higher than
Debian GNU/Linux                   |     two, the case will fail.
branden@debian.org                 |     -- Tom Lane, on Forgent's claim of
http://people.debian.org/~branden/ |        a patent on JPEG

Attachment: signature.asc
Description: Digital signature


Reply to: