topHandler03 failing

Duncan Coutts duncan at well-typed.com
Fri Nov 15 14:06:32 UTC 2013


On Fri, 2013-11-15 at 11:21 +0100, Joachim Breitner wrote:
> Hi,
> 
> I don’t trust the travis setup enough to automatically relay failures,
> so I do it manually. Since these patches:
> 
> Changes to ghc:
> Changes to base:
> commit dd00004
> Author: Duncan Coutts <duncan at well-typed.com>
> Date:   Thu Nov 14 15:16:30 2013 +0000
> 
>     Add tests for the top level exception handler

>     So we test that:

>     3. an unhandled ExitFailure (-sig) makes us kill ourselves with sig

[..snip..]

> I get this failure on travis:
> 
> =====> topHandler03(normal) 3622 of 3821 [0, 0, 0] 
> Actual stderr output differs from expected:
> --- /dev/null	2013-11-14 17:46:34.724312327 +0000
> +++ ../../libraries/base/tests/topHandler03.run.stderr	2013-11-14 18:24:52.367542630 +0000
> @@ -0,0 +1 @@
> +Terminated

> Does anyone feel responsible?

Yep, that'd be me.

Turns out it's an annoying difference in shell behaviour between systems
(or maybe even configurations). When a process exits with a signal, some
shells print out a line indicating what the signal was, e.g.
"Terminated" for SIGTERM, oh "Hangup" for SIGHUP.

$ sh -c 'kill -TERM $$'
Terminated

For some reason on my system I didn't get any message so I didn't
notice. Anyway, the solution was to annotate the test runner so it
ignores stdout for that test.

I have no idea why our python test framework is running the Haskell
progs via a shell, rather than directly. It also means that the exit
code handling is rather messed up (see the python test driver code for
all the e << 8, e >> 8 bit twiddling madness); instead of cleanly
getting the exit signal, we get an encoding using 128 + sig.

-- 
Duncan Coutts, Haskell Consultant
Well-Typed LLP, http://www.well-typed.com/



More information about the ghc-devs mailing list