Bug#847397: libimager-perl FTBFS on mips/mipsel: Failed 10/66 test programs

gregor herrmann gregoa at debian.org
Thu Dec 8 19:07:23 UTC 2016


On Thu, 08 Dec 2016 09:11:51 +1100, Tony Cook wrote:

> > https://buildd.debian.org/status/package.php?p=libimager-perl&suite=sid
> > 
> > ...
> > Test Summary Report
> > -------------------
> > t/150-type/030-double.t       (Wstat: 10 Tests: 16 Failed: 0)
> >   Non-zero wait status: 10
> >   Parse errors: Bad plan.  You planned 136 tests but ran 16.
> 
> This looks like an unaligned access from the tests that failed,
> probably in imgdouble.c.
> 
> Would it be possible to get access to this (or similar) hardware to
> debug on?

Difficult :/
 
> Otherwise a backtrace for a -g build from the crash would be handy:
> 
>   perl Makefile.PL OPTIMIZE=-g
>   make
>   gdb --args perl -Mblib t/150-type/030-double.t
>   r
>   <crash here?>
>   bt

Sure; this is from a mips sid chroot on minker (mips* porterbox):

First verify the build failure:

$ dpkg-buildpackage -uc -us
[..]
t/150-type/030-double.t ......... 
1..136
ok 1 - use Imager;
ok 2 - 1 channel image channel count mismatch
ok 3 - 1 channel image bad mask
ok 4 - 1 channel image thinks it is virtual
# 64 double bits
ok 5 - 1 channel image has bits != 64
ok 6 - 1 channel image isn't direct
ok 7 - 1 channel image width incorrect
ok 8 - 1 channel image height incorrect
ok 9 - 3 channel image channel count mismatch
ok 10 - 3 channel image bad mask
ok 11 - 3 channel image has bits != 64
ok 12 - 3 channel image isn't direct
ok 13 -  - got right color (0, 0)
ok 14 -  - got right color (99, 0)
ok 15 -  - got right color (0, 100)
ok 16 -  - got right color (99, 100)
Failed 120/136 subtests 
[..]
Test Summary Report
-------------------
t/150-type/030-double.t       (Wstat: 10 Tests: 16 Failed: 0)
  Non-zero wait status: 10
  Parse errors: Bad plan.  You planned 136 tests but ran 16.
[...]


Good. Now on the the debug build and test:

$ perl Makefile.PL OPTIMIZE=-g
[..]
$ make
[..]
$ gdb --args perl -Mblib t/150-type/030-double.t
[..]
(gdb) r
Starting program: /usr/bin/perl -Mblib t/150-type/030-double.t
warning: GDB can't find the start of the function at 0x77fc6b8c.

    GDB is unable to find the start of the function at 0x77fc6b8c
and thus can't determine the size of that function's stack frame.
This means that GDB may be unable to access that stack frame, or
the frames below it.
    This problem is most likely caused by an invalid program counter or
stack pointer.
    However, if you think GDB should simply search farther back
from 0x77fc6b8c for code which looks like the beginning of a
function, you can increase the range of the search using the `set
heuristic-fence-post' command.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/mips-linux-gnu/libthread_db.so.1".
warning: GDB can't find the start of the function at 0x77fc7648.
warning: GDB can't find the start of the function at 0x77fca0e8.
warning: GDB can't find the start of the function at 0x77fdb194.
1..136
warning: GDB can't find the start of the function at 0x77fca0e8.
warning: GDB can't find the start of the function at 0x77fdb194.
warning: GDB can't find the start of the function at 0x77fca0e8.
warning: GDB can't find the start of the function at 0x77fdb194.
warning: GDB can't find the start of the function at 0x77fca0e8.
warning: GDB can't find the start of the function at 0x77fdb194.
warning: GDB can't find the start of the function at 0x77fca0e8.
warning: GDB can't find the start of the function at 0x77fdb194.
ok 1 - use Imager;
ok 2 - 1 channel image channel count mismatch
ok 3 - 1 channel image bad mask
ok 4 - 1 channel image thinks it is virtual
# 64 double bits
ok 5 - 1 channel image has bits != 64
ok 6 - 1 channel image isn't direct
ok 7 - 1 channel image width incorrect
ok 8 - 1 channel image height incorrect
ok 9 - 3 channel image channel count mismatch
ok 10 - 3 channel image bad mask
ok 11 - 3 channel image has bits != 64
ok 12 - 3 channel image isn't direct
ok 13 -  - got right color (0, 0)
ok 14 -  - got right color (99, 0)
ok 15 -  - got right color (0, 100)
ok 16 -  - got right color (99, 100)
ok 17 - sanity glin @0 - check colors (0, 0)
ok 18 - sanity glin @100 - check colors (0, 100)
ok 19 - check after write - check colors (0, 1)
ok 20 - couldn't make double image
ok 21 - oo didn't give double image
ok 22 - not monochrome
ok 23 - oo copy didn't give double image
ok 24 - fail making 0 width image
ok 25 - and correct message
ok 26 - fail making 0 height image
ok 27 - and correct message
ok 28 - fail making -ve width image
ok 29 - and correct message
ok 30 - fail making -ve height image
ok 31 - and correct message
ok 32 - fail making 0 channel image
ok 33 - and correct message
ok 34 - fail making 5 channel image
ok 35 - and correct message
ok 36 - integer overflow check - 1 channel
ok 37 - but same width ok
ok 38 - but same height ok
ok 39 - check the error message
ok 40 - integer overflow check - 3 channel
ok 41 - but same width ok
ok 42 - but same height ok
ok 43 - check the error message
# channel mask tests
# with ppix
ok 44 - set to default mask
ok 45 - set to white all channels
ok 46 - got right color (0, 0)
ok 47 - set channel to exclude channel1
ok 48 - set to grey, no channel 2
ok 49 - got right color (0, 0)
# with plin
ok 50 - set to default mask
ok 51 - set to white all channels
ok 52 - got right color (0, 1)
ok 53 - set channel to exclude channel1
ok 54 - set to grey, no channel 2
ok 55 - got right color (0, 1)
# with ppixf
ok 56 - set to default mask
ok 57 - set to white all channels
ok 58 - ppixf - got right color (0, 2)
ok 59 - set channel to exclude channel1
ok 60 - set to grey, no channel 2
ok 61 - ppixf masked - got right color (0, 2)
# with plinf
ok 62 - set to default mask
ok 63 - set to white all channels
ok 64 - plinf - got right color (0, 3)
ok 65 - set channel to exclude channel1
ok 66 - set to grey, no channel 2
ok 67 - plinf masked - got right color (0, 3)
ok 68 - bounds check get (-1, 0)
ok 69 - bounds check get (10, 0)
ok 70 - bounds check get (0, -1)
ok 71 - bounds check get (0, 10)
ok 72 - bounds check get (-1, 0) float
ok 73 - bounds check get (10, 0) float
ok 74 - bounds check get (0, -1) float
ok 75 - bounds check get (0, 10) float
ok 76 - bounds check set (-1, 0)
ok 77 - bounds check set (10, 0)
ok 78 - bounds check set (0, -1)
ok 79 - bounds check set (0, 10)
ok 80 - bounds check set (-1, 0) float
ok 81 - bounds check set (10, 0) float
ok 82 - bounds check set (0, -1) float
ok 83 - bounds check set (0, 10) float
# check conversion to double
ok 84 - check bits
ok 85 - check image data matches
ok 86 - make empty image
ok 87 - convert empty image to double
ok 88 - check message
# psamp
ok 89 - i_psamp def channels, 3 samples
ok 90 - check color written
ok 91 - i_psamp def channels, 3 samples, masked
ok 92 - check color written
ok 93 - i_psamp channels listed, 3 samples, masked
ok 94 - check color written
ok 95 - i_psamp channels [0, 1], 4 samples
ok 96 - check first color written
ok 97 - check second color written
ok 98 - write a full row
ok 99 - check full row
ok 100 - i_psamp channels [0, 1, 2], 9 samples, but room for 6
ok 101 - i_psamp channels [0, 1, 3], 3 samples (invalid channel number)
ok 102 - check error message
ok 103 - i_psamp channels [0, 1, -1], 3 samples (invalid channel number)
ok 104 - check error message
ok 105 - negative y
ok 106 - check error message
ok 107 - y overflow
ok 108 - check error message
ok 109 - negative x
ok 110 - check error message
ok 111 - x overflow
ok 112 - check error message
# end psamp tests
# psampf
ok 113 - i_psampf def channels, 3 samples
ok 114 - check color written
ok 115 - i_psampf def channels, 3 samples, masked
ok 116 - check color written
ok 117 - i_psampf channels listed, 3 samples, masked
ok 118 - check color written
ok 119 - i_psampf channels [0, 1], 4 samples
ok 120 - check first color written
ok 121 - check second color written
ok 122 - write a full row
ok 123 - check full row
ok 124 - i_psampf channels [0, 1, 2], 9 samples, but room for 6
ok 125 - i_psampf channels [0, 1, 3], 3 samples (invalid channel number)
ok 126 - check error message
ok 127 - i_psampf channels [0, 1, -1], 3 samples (invalid channel number)
ok 128 - check error message
ok 129 - negative y
ok 130 - check error message
ok 131 - y overflow
ok 132 - check error message
ok 133 - negative x
ok 134 - check error message
ok 135 - x overflow
ok 136 - check error message
# end psampf tests
[Inferior 1 (process 23106) exited normally]

So no crash, no stack. But scary warnings at the top.

And I'm afraid that's where my gdb skills end :/


Cheers,
gregor


-- 
 .''`.  https://info.comodo.priv.at/ - Debian Developer https://www.debian.org
 : :' : OpenPGP fingerprint D1E1 316E 93A7 60A8 104D  85FA BB3A 6801 8649 AA06
 `. `'  Member of VIBE!AT & SPI, fellow of the Free Software Foundation Europe
   `-   NP: Rolling Stones: Going Mad
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 963 bytes
Desc: Digital Signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-perl-maintainers/attachments/20161208/fefd3f5d/attachment.sig>


More information about the pkg-perl-maintainers mailing list