Subject: bug#25463: guile-2.0.13 Check errors

From: [email-masked] (Ludovic Courtès)
Date: Mon, 06 Mar 2017 17:00:42 +0100

Hi Manolis,

Manolis Ragkousis <[email-masked]> skribis:

> On 02/11/2017 11:03 PM, Ludovic Courtès wrote:
>> Hello!
>> 
>> [email-masked] skribis:
>> 
>>> I am trying to build guile version 2.0.13 in GNU Hurd through Guix
>>> package manager, in the 'Check' phase I have 4 errors; I am attaching
>>> the build log(config.zip), environment
>>> variables(environment-variables) and test log(check-guile.zip).
>>>
>>> This is a grep of errors, any idea how I can deal with this?
>>>
>>> /*---------------------------------------------------------------------------------*/
>>> ERROR: 00-repl-server.test: repl-server: simple expression -
>>> arguments: ((system-error "fport_fill_input" "~A" ("Transport endpoint
>>> is not connected") (1073741881)))
>>> ERROR: 00-repl-server.test: repl-server: HTTP inter-protocol attack - 
>>> arguments: ((system-error "fport_fill_input" "~A" ("Transport endpoint
>>> is not connected") (1073741881)))
>> 
>> The Guix package for Guile incorporates a patch that corresponds to
>> Guile commit 2fbde7f02adb8c6585e9baf6e293ee49cd23d4c4, which fixes a
>> race condition for these tests.
>> 
>
> While using guile 2.0.14, which has commit 2fbde7f02adb8c6, the bug is
> still present. Any ideas on what could be causing this Ludo?

Is it 100% reproducible if you run:

  ./check-guile 00-repl-server.test

from Guile’s build tree?

This test uses a Unix-domain socket, which on the Hurd means that
/servers/socket/3 (I think?) must have the right translator on it.

00-socket.test also uses Unix-domain sockets.  Does it pass?

Looking more closely, it might be that one of the hunks of the patch
below solves the problem.  Could you try and report back?

(Looking at
<http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html>, I
think ECONNRESET is more appropriate than ENOTCONN in the second case.)

HTH,
Ludo’.

diff --git a/test-suite/tests/00-repl-server.test b/test-suite/tests/00-repl-server.test
index 4b5ec0cb3..0b4d0c6b0 100644
--- a/test-suite/tests/00-repl-server.test
+++ b/test-suite/tests/00-repl-server.test
@@ -62,7 +62,7 @@ socket connected to that server."
                  (connect client-socket sockaddr))
                (lambda args
                  (when (memv (system-error-errno args)
-                             (list ENOENT ECONNREFUSED))
+                             (list ENOENT ECONNREFUSED ENOTCONN))
                    (when (> tries 30)
                      (throw 'unresolved))
                    (usleep 100)
@@ -139,7 +139,7 @@ reached."
                   (loop (+ 1 n))))))
         (lambda args
           (->bool (memv (system-error-errno args)
-                        (list ECONNRESET EPIPE))))))))
+                        (list ECONNRESET EPIPE ENOTCONN))))))))
 
 ;;; Local Variables:
 ;;; eval: (put 'with-repl-server 'scheme-indent-function 1)