Bug#760841: pspp: [kfreebsd] random testsuite failures

2014-09-08 Thread Steven Chamberlain
Package: pspp
Version: 0.8.3-4
Severity: important
User: debian-...@lists.debian.org
Usertags: kfreebsd
X-Debbugs-CC: pspp-...@gnu.org, debian-...@lists.debian.org

Hi,

https://buildd.debian.org/status/fetch.php?pkg=pspp&arch=kfreebsd-amd64&ver=0.8.3-4&stamp=1408700427

On 08/09/14 10:03, Friedrich Beckmann wrote:
> The package does not build because one test (read UTF-16 as Auto) in the
> regression fails. The strange thing is
> that the test already passed in a previous build attempt for package
> 0.8.3-2 but there is no difference in the source code. 
> Even stranger is that the package failed on kfreebsd-i386 for version
> 0.8.3-1.3 with exactly the same failing test. 

I'm opening a bug to track this issue because, even though it was given
back and built successfully, it may recur in future, and it suggests a
bug somewhere that we'd like to fix.

> Ben Pfaff could not reproduce the problem on machine
> fischer: http://lists.gnu.org/archive/html/pspp-dev/2014-08/msg00025.html
> and so we left it and it build for 0.8.3-2 with no source code change on
> kfreebsd-i386.

I couldn't reproduce it yet either.  But I think we have a race
condition somewhere, perhaps in pspp, another library, the test, or even
the test framework.

I'll note that on the kfreebsd buildds the testsuite runs with -j2

Thanks,
Regards,
-- 
Steven Chamberlain
ste...@pyro.eu.org


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Bug#760841: pspp: [kfreebsd] random testsuite failures

2014-09-08 Thread Steven Chamberlain
Hi again,

The failing test ("test 940", but that number may change) is this:

> AT_SETUP([read UTF-16 as Auto])
> AT_KEYWORDS([u8_istream])
> AT_CHECK([i18n-test supports_encodings UTF-16 UTF-16BE UTF-16LE])

This check seems fine:
> AT_CHECK([printf '\0e\0n\0t\0r\0\351\0e\0\n' | u8-istream-test read - Auto],
>   [0], [entrée
> ])

This is the check that is usually seen to fail (u8-istream.at:146) :
> AT_CHECK([printf 'e\0n\0t\0r\0\351\0e\0\n\0' | u8-istream-test read - Auto],
>   [0], [entrée
> ])

It is supposed to decode the UTF-16LE string to UTF-8.  The following
method reproduced it 1.9% of the time on my kfreebsd-amd64 system.  When
it fails, it outputs the raw input string not converted at all:

> ~/pspp-0.8.3$ for i in $(seq 1 1000) ; do printf 'e\0n\0t\0r\0\351\0e\0\n\0' 
> | tests/libpspp/u8-istream-test read - Auto | xxd ; done | sort | uniq -c | 
> sort -bn
>  19 000: 6500 6e00 7400 7200 c3a9 0065 000a 00e.n.t.re...
> 981 000: 656e 7472 c3a9 650a  entr..e.

This check seems fine:
> AT_CHECK([printf '\376\377\0e\0n\0t\0r\0\351\0e\0\n' | u8-istream-test read - 
> Auto],
>   [0], [entrée
> ])

This check seems to have issues too (UTF-16LE with Byte-Order Marker):
> AT_CHECK([printf '\377\376e\0n\0t\0r\0\351\0e\0\n\0' | u8-istream-test read - 
> Auto],
>   [0], [entrée
> ])

> ~/pspp-0.8.3$ for i in $(seq 1 1000) ; do printf 
> '\377\376e\0n\0t\0r\0\351\0e\0\n\0' | tests/libpspp/u8-istream-test read - 
> Auto | xxd ; done | sort | uniq -c | sort -bn

Raw input string output about 1.4% of the time:
>  14 000: c3bf c3be 6500 6e00 7400 7200 c3a9 0065  e.n.t.re
>  14 010: 000a 00  ...

Correct output:
> 986 000: 656e 7472 c3a9 650a  entr..e.

Regards,
-- 
Steven Chamberlain
ste...@pyro.eu.org


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Bug#760841: pspp: [kfreebsd] random testsuite failures

2014-09-08 Thread Friedrich Beckmann
Thank you for trying the build, adding the bug description to the bugtracker 
and analyzing the problem!

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760841

Friedrich 

--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Bug#760841: pspp: [kfreebsd] random testsuite failures

2014-09-08 Thread Steven Chamberlain
With some difficulty, I managed to reproduce the failure situation under
ktrace, so that I could diff with the successful case:

>  u8-istream-test CALL  read(0,0x640670,0x1000)
> -u8-istream-test GIO   fd 0 read 13 bytes
> -0x 6500 6e00 7400 7200 e900 6500 0a
> +u8-istream-test GIO   fd 0 read 14 bytes
> +0x 6500 6e00 7400 7200 e900 6500 0a00
>  
> -u8-istream-test RET   read 13/0xd
> +u8-istream-test RET   read 14/0xe

The size of the read from fd 0 (stdin) was different;  the last null
byte got truncated.  I don't know why that is.  The read is assumed to
be complete and it doesn't attempt to read again.

The effect is it will later decide the string is not valid UTF-16LE, so
treats it as CP1252, and doesn't properly convert it.

It seems logical this bug only happened for Little Endian encodings
(strings with Big Endian encoding will not end with a null byte).

>  u8-istream-test CALL  open(0x8012baba0,0,0)
>  u8-istream-test NAMI  
> "/usr/lib/x86_64-kfreebsd-gnu/gconv/gconv-modules.cache"
>  u8-istream-test RET   open 3
> -u8-istream-test CALL  fstat(0x3,0x7fffcf40)
> +u8-istream-test CALL  fstat(0x3,0x7fffd190)
>  u8-istream-test STRU  invalid record
>  u8-istream-test RET   fstat 0
>  u8-istream-test CALL  mmap(0,0x6696,0x1,0x1,0x3,0)
>  u8-istream-test RET   mmap 34368200704/0x800812000
>  u8-istream-test CALL  close(0x3)
>  u8-istream-test RET   close 0
> -u8-istream-test CALL  open(0x6499c0,0x10,0)
> -u8-istream-test NAMI  "/usr/lib/x86_64-kfreebsd-gnu/gconv/CP1252.so"
> +u8-istream-test CALL  open(0x6417d0,0x10,0)
> +u8-istream-test NAMI  "/usr/lib/x86_64-kfreebsd-gnu/gconv/UTF-16.so"

Regards,
-- 
Steven Chamberlain
ste...@pyro.eu.org


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org