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: [EMAIL PROTECTED], [EMAIL PROTECTED] > > 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. [EMAIL PROTECTED] | -- Tom Lane, on Forgent's claim of http://people.debian.org/~branden/ | a patent on JPEG
signature.asc
Description: Digital signature