Subject: bug#32671: 00-repl-server.test fails sometimes

From: Rob Browning <[email-masked]>
Date: Wed, 15 Jan 2025 11:07:38 -0600

"pelzflorian (Florian Pelz)" <[email-masked]> writes:

> I get the following error 3 in 7 times when building Guile 2.2.4 on
> Guix on Debian Buster on my Beaglebone Black (armhf architecture):
>
> PASS: repl-server: simple expression
> ERROR: repl-server: HTTP inter-protocol attack - arguments: ((system-error "fport_write" "~A" ("Datenübergabe unterbrochen (broken pipe)") (32)))

[...]

> Note that the test does not fail reliably but only sometimes.

I've seen the same thing, and I had a suspicion that they mostly (only?)
happen during parallel testing, e.g. "make -j5 check".  That suspicion
was reinforced when I was able to reproduce the error more relably via a
few moreutils parallel runs like this:

  $ parallel -j 3 ./check-guile \
      -- 00-repl-server.test 00-repl-server.test \

I found that the failure is due to a throw from write request and
wrapping it like this:

  ;; Simulate an HTTP inter-protocol attack.
  (catch 'system-error
    (lambda ()
      (write-request (build-request (string->uri "http://localhost"))
                     socket))
    (lambda what
      (format (current-error-port) "write-request exception ~s\n" what)
      (throw 'unresolved what)))

does suppress the failure, while writing the same exception list seen in
the original failures to stderr.

I haven't actually looked closely at the test to see what the failure
might mean.

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4