Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 310847 - app-arch/dpkg-1.15.6 fails tests (segfaults)
Summary: app-arch/dpkg-1.15.6 fails tests (segfaults)
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Debian-related package maintainers [DISBANDED]
Depends on:
Blocks: fortify-source gcc-4.5
  Show dependency tree
Reported: 2010-03-23 09:14 UTC by Diego Elio Pettenò (RETIRED)
Modified: 2010-10-11 07:45 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---

Build log (dpkg-1.15.6:20100323-040323.log,99.43 KB, text/plain)
2010-03-23 09:14 UTC, Diego Elio Pettenò (RETIRED)
Stops the segfaults, but the test still fails (dpkg-1.15.6-t-ar.patch,429 bytes, patch)
2010-03-24 04:24 UTC, Jeroen Roovers (RETIRED)
Details | Diff
Build log (dpkg-,86.42 KB, text/plain)
2010-05-21 16:11 UTC, Diego Elio Pettenò (RETIRED)

Note You need to log in before you can comment on or make changes to this bug.
Description Diego Elio Pettenò (RETIRED) gentoo-dev 2010-03-23 09:14:30 UTC
Portage (default/linux/x86/10.0, gcc-4.4.3-asneeded, glibc-2.11-r1, i686)
System uname: Linux-
Timestamp of tree: Mon, 22 Mar 2010 14:30:01 +0000
ccache version 2.4 [disabled]
app-shells/bash:     4.1_p2
dev-java/java-config: 1.3.7-r1, 2.1.10
dev-lang/python:     2.6.5, 3.1.1-r1
dev-python/pycrypto: 2.1.0
dev-util/ccache:     2.4-r8
dev-util/cmake:      2.8.1
sys-apps/baselayout: 2.0.1
sys-apps/openrc:     0.6.0-r1
sys-apps/sandbox:    2.2
sys-devel/autoconf:  2.13, 2.65
sys-devel/automake:  1.4_p6-r1, 1.5-r1, 1.6.3-r1, 1.7.9-r2, 1.8.5-r4, 1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils:  2.20.1
sys-devel/gcc:       4.4.3
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.6b
virtual/os-headers:  2.6.33
CFLAGS="-O2 -pipe"
CONFIG_PROTECT="/etc /opt/openfire/resources/security/ /opt/openjms/config /usr/share/X11/xkb /usr/share/bufrtables /usr/share/config /usr/share/qpsmtpd/plugins /var/bind /var/lib/hsqldb /var/phxd /var/spool/torque /var/vpopmail/etc"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe"
FEATURES="assume-digests distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms split-log strict test test-fail-continue unmerge-orphans userfetch userpriv usersandbox"
INSTALL_MASK="  /usr/share/doc  /usr/share/info"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
USE="acl berkdb bzip2 cli cracklib crypt cups cxx dri fortran gdbm gpm iconv ipv6 java5 java6 modules mudflap ncurses nls nostatic nptl nptlonly openmp pam pcre perl pppd python qt3support readline reflection ruby session spl ssl sysfs tcpd unicode x86 xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias auth_digest" ELIBC="glibc" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" RUBY_TARGETS="ruby18 jruby ruby19" USERLAND="GNU" 
Comment 1 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-03-23 09:14:41 UTC
Created attachment 224823 [details]
Build log
Comment 2 Jeroen Roovers (RETIRED) gentoo-dev 2010-03-23 17:39:41 UTC
Ah yes. This appears to be a new test in the 1.15.6 release. It probably clashes with either gcc 4.4 or glibc 2.11 because I don't see it on a stable x86 system. The compiler even warns about the upcoming buffer overflow it appears.
Comment 3 Jeroen Roovers (RETIRED) gentoo-dev 2010-03-23 17:40:58 UTC
RESTRICT=test is now in place.
Comment 4 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-03-23 17:55:29 UTC
Eh? If it's a single test that's broken, can't you just sed the hell out of it? Rather than restrict tests entirely (which everybody will forget about next turn, so no more tests will be executed for the package for the next year or so and it'll stay broken)?
Comment 5 Jeroen Roovers (RETIRED) gentoo-dev 2010-03-24 03:33:21 UTC
Why would everybody forget about it? I have checks in place myself that remind me of ebuilds that set RESTRICT=test. I just assumed other developers keep note of such things as well.
Comment 6 Jeroen Roovers (RETIRED) gentoo-dev 2010-03-24 04:24:17 UTC
Created attachment 225065 [details, diff]
Stops the segfaults, but the test still fails
Comment 7 Jeroen Roovers (RETIRED) gentoo-dev 2010-03-24 04:40:18 UTC
dpkg_ar_normalize_name() seems to fail to strip both spaces and slashes too. 

---  2010-03-24 05:11:48.000000000 +0100
+++ t-ar.c      2010-03-24 05:33:46.000000000 +0100
@@ -31,11 +31,13 @@
        strcpy(arh.ar_name, "member-name/   ");
-       test_str(arh.ar_name, ==, "member-name");
+       fprintf(stderr, "arh.ar_name=\"%s\"\n", arh.ar_name);
+       /*test_str(arh.ar_name, ==, "member-name");*/
        strcpy(arh.ar_name, "member-name    ");
-       test_str(arh.ar_name, ==, "member-name");
+       fprintf(stderr, "arh.ar_name=\"%s\"\n", arh.ar_name);
+       /*test_str(arh.ar_name, ==, "member-name");*/

Adding a printf reveals that the function doesn't change anything in the struct:

PASS: t-varbuf
arh.ar_name="member-name/   "
arh.ar_name="member-name    "
PASS: t-ar
Comment 8 Jeroen Roovers (RETIRED) gentoo-dev 2010-03-24 05:28:30 UTC
OK, I've disabled the ar test for this version. It does fail again further on, as did previous dpkg versions IIRC, in one of the perl tests.
Comment 9 Jeroen Roovers (RETIRED) gentoo-dev 2010-03-24 05:43:48 UTC
I have disabled the second failing test and the suite appears to finish as it should now.

Whereas the first failure probably occurs because it hasn't been tested with a new enough GCC (4.4 triggers it for me), the latter failure is probably caused because the test was not updated to reflect changes in the perl module's API.

I've made disabling these tests conditional on the dpkg version so that both these tests will be run in any newer upstream version.

Can I call it fixed now?
Comment 10 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-05-21 16:11:49 UTC
Created attachment 232377 [details]
Build log

Still fails — the problem is related to the two fortify warnings (“will always overflow destination buffer”), which make them crash with GCC 4.5.
Comment 11 Ryan Hill (RETIRED) gentoo-dev 2010-10-04 20:21:14 UTC;a=commitdiff;h=db0b70b

This fixes the test but not the overflow warning in t-ar.c
Comment 12 Ryan Hill (RETIRED) gentoo-dev 2010-10-04 20:24:43 UTC
Nevermind, I'm blind.  Yes it does.
Comment 13 Jeroen Roovers (RETIRED) gentoo-dev 2010-10-05 01:28:06 UTC
(In reply to comment #11)

That appears to have been released in 1.15.8.
Comment 14 Ryan Hill (RETIRED) gentoo-dev 2010-10-11 07:45:45 UTC
Cool, fixed then.