[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ngircd test suite failure on mips64el


On 22/08/17 17:51, Christoph Biedl wrote:
> Hello (debian-mipsel and ngircd upstream),
> my latest upload of ngircd (24-2) a few days ago failed to build on
> mips64el, and on that architecture only. Checking the build log[0] and
> additional tests on the Debian porter box "eller" showed the cause is
> in the "test-mode" test of the test suite. More precisely, the
> | send "mode #usermode +a nick\r"
> [ mode-test.e:57 ]
> does not return a string containing "482", thus this test is considered
> failing, and so the entire build. Same for the "+q" test that follows
> once the above "+a" test is disabled.
[...]> The previous upload of ngircd 24-1 back in January was built using
> gcc-6 and showed no problems, also there are no changes between -1 and
> -2 that would even remotely explain this behaviour.
> Ultimately, after rebuilding on mips64el using -O0 the test suite
> passes. Although it's usually premature to assume it: This smells like
> a compiler bug.
> Could anyone shed some light on this? Or perhaps extract the relevant
> parts for a small reproducer?

This is very likely #871514 in gcc-7. Unfortunately it is affecting a
lot of packages in the archive at the moment causing incorrect code to
be generated.

The bug happens if a "small" variable is spilled to the stack. GCC may
emit a store of the smaller size to the stack, but then load it back as
a 64-bit integer. The top bits of the register will then contain some
garbage on the stack and cause comparisons like in your example to fail
(the bottom bits will be 0 but the top bits won't be).


Attachment: signature.asc
Description: OpenPGP digital signature

Reply to: