Summary: | app-arch/dpkg-1.15.6 fails tests (segfaults) | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Diego Elio Pettenò (RETIRED) <flameeyes> |
Component: | New packages | Assignee: | Debian-related package maintainers [DISBANDED] <deb-tools+disabled> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | High | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 259417, 296658 | ||
Attachments: |
Build log
Stops the segfaults, but the test still fails Build log |
Description
Diego Elio Pettenò (RETIRED)
2010-03-23 09:14:30 UTC
Created attachment 224823 [details]
Build log
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. RESTRICT=test is now in place. 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)? 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. Created attachment 225065 [details, diff]
Stops the segfaults, but the test still fails
dpkg_ar_normalize_name() seems to fail to strip both spaces and slashes too. --- t-ar.c.org 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/ "); dpkg_ar_normalize_name(&arh); - 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 "); dpkg_ar_normalize_name(&arh); - test_str(arh.ar_name, ==, "member-name"); + fprintf(stderr, "arh.ar_name=\"%s\"\n", arh.ar_name); + /*test_str(arh.ar_name, ==, "member-name");*/ } void 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 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. 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? 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.
http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=db0b70b This fixes the test but not the overflow warning in t-ar.c Nevermind, I'm blind. Yes it does. (In reply to comment #11) > http://git.debian.org/?p=dpkg/dpkg.git;a=commitdiff;h=db0b70b That appears to have been released in 1.15.8. Cool, fixed then. |