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

zeromq3: ssh freeze by running a test program twice (or once and removing the created socket)

Source: zeromq3
Version: 4.0.5+dfsg-2
Severity: Important
Tags: patch
User: debian-hurd@lists.debian.org
Usertags: hurd

Attached are patches for adding GNU/Hurd to the list of supported
architectures for zeromq3. I have tried bot the select and poll
versions, same result.

Libraries needed to run the dynamically linked lt-test_regrep_ipc
excutable are: libzmq.so.3.1.0 (not included here 3.2 MiB), libpgm-5.1-0
and libsodium13. Failing test programs are test_abstract_ipc,
test_pair_ipc, test_reqrep_ipc, the first should exit with an assertion,
the other two due to a missing implementation of option SO_ERROR for

The attached test program makes sshd (all ssh connections) freeze hard,
either by running twice, or once and then removing the created
socket /tmp/tester. Breaking the ssh connection(s) and logging in again,
everything works normally. rpctrace shows that the failure happens at
110<--141(pid1186)->dir_lookup ("tmp" 0 0) = 0 1 ""
<freeze here>
183<--185(pid1186)->dir_unlink ("tester") = 0

More rpctrace data is at: http://paste.debian.net/129009/ (as long as
it stays there, 24 hours?)

Building the package (and running the testsuite) hangs even if the
patch adds XFAIL for the three failing tests. Logging in via ssh and
building creates the freeze above, and building in the Hurd console of
qemu results in a translator dying: Resource lost.

Debugging with gdb is fine until the function __dir_unlink
RPC_dir_unlink.c is called, which hangs. Doing the same on another
(ordinary file) in /tmp follows the same path (and __dir_unlink
succeeds). The problems are probably created before the RPC call??

Any further ideas or pointers are welcome. Thanks!
Index: zeromq3-4.0.5+dfsg/configure.ac
--- zeromq3-4.0.5+dfsg.orig/configure.ac
+++ zeromq3-4.0.5+dfsg/configure.ac
@@ -115,6 +115,7 @@ libzmq_dso_visibility="yes"
 # Set some default features required by 0MQ code.
@@ -249,6 +250,17 @@ case "${host_os}" in
             AC_MSG_ERROR([Building static libraries is not supported under Cygwin])
+    gnu*)
+        # Define on GNU/Hurd to enable all library features. Define if using a gnu compiler
+        if test "x$GXX" = "xyes"; then
+        fi
+        AC_DEFINE(ZMQ_HAVE_GNU, 1, [Have GNU/Hurd OS])
+        libzmq_on_gnu="yes"
+	AC_CHECK_LIB(rt, sem_init)
+        AC_CHECK_LIB(uuid, uuid_generate, ,
+            [AC_MSG_ERROR([cannot link with -luuid, install uuid-dev.])])
+        ;;
         AC_MSG_ERROR([unsupported system: ${host_os}.])
@@ -431,6 +443,7 @@ AM_CONDITIONAL(BUILD_PGM, test "x$libzmq
 AM_CONDITIONAL(ON_MINGW, test "x$libzmq_on_mingw32" = "xyes")
 AM_CONDITIONAL(ON_ANDROID, test "x$libzmq_on_android" = "xyes")
 AM_CONDITIONAL(ON_LINUX, test "x$libzmq_on_linux" = "xyes")
+AM_CONDITIONAL(ON_GNU, test "x$libzmq_on_gnu" = "xyes")
 # Checks for library functions.
Index: zeromq3-4.0.5+dfsg/src/poller.hpp
--- zeromq3-4.0.5+dfsg.orig/src/poller.hpp
+++ zeromq3-4.0.5+dfsg/src/poller.hpp
@@ -73,6 +73,13 @@
 #elif defined ZMQ_HAVE_CYGWIN
 #include "select.hpp"
+#elif defined ZMQ_HAVE_GNU
+#include "select.hpp"
+#define ZMQ_USE_POLL
+#include "poll.hpp"
 #error Unsupported platform
Index: zeromq3-4.0.5+dfsg/tests/Makefile.am
--- zeromq3-4.0.5+dfsg.orig/tests/Makefile.am
+++ zeromq3-4.0.5+dfsg/tests/Makefile.am
@@ -100,4 +100,7 @@ TESTS = $(noinst_PROGRAMS)
 XFAIL_TESTS = test_abstract_ipc
+if ON_GNU
+XFAIL_TESTS += test_pair_ipc test_reqrep_ipc

Attachment: lt-test_reqrep_ipc
Description: application/executable

Reply to: