Package: dejagnu Version: 1.5-3 Severity: important Tags: upstream patch Dear Maintainer,
A very old bug, that was only recently patched in upstream dejagnu, but that has been fixed in some other distros, causes dejagnu when running on multiple cores to produce spurious errors/FAILs. Depending on load dejagnu, when spawning a child process, might get a SIGHUP when the child finishes, but not all output has been read in the dejagnu parent process. This might cause dejagnu to report FAILs for tests that should normally PASS. The bug was found in 2005: https://lists.gnu.org/archive/html/bug-dejagnu/2005-08/msg00000.html But only applied upstream in 2011: https://lists.gnu.org/archive/html/dejagnu/2011-03/msg00019.html http://git.savannah.gnu.org/gitweb/?p=dejagnu.git;a=patch;h=50a378f626fcdbaf30202a36bf73738de08a53bf It didn't make it into the dejagnu 1.5 or 1.5.1 release yet. But has been in for example the fedora dejagnu package for years. http://pkgs.fedoraproject.org/cgit/dejagnu.git/commit/?id=7d64d9a9d8bac6e44ea82144c30087fec9369704 The backport to the packaged dejagnu is simple: --- /usr/share/dejagnu/remote.exp 2011-11-23 14:12:26.000000000 +0100 +++ /usr/share/dejagnu/remote.exp 2015-01-26 22:01:05.670611971 +0100 @@ -86,11 +86,16 @@ # doesn't assign process groups correctly and we can't reliably kill # programs that bear children. We can't use tcl's exec because it has # no way to timeout programs that hang. *sigh* + # + # The expect command will close the connection when it sees EOF. On + # SMP machine, close the connection may send SIGHUP to the child + # and cause it to exit before it can exit normally. We should make + # the child to ignore SIGHUP. global errorInfo if { "$inp" == "" && "$outp" == "" } { set id -1 - set result [catch "eval spawn \{${commandline}\}" pid] + set result [catch "eval spawn -ignore SIGHUP \{${commandline}\}" pid] if { $result == 0 } { set result2 0 } else { @@ -130,7 +135,7 @@ return [list -1 "open of $commandline $inp $outp failed: $errorInfo"] } set pid [pid $id] - set result [catch "spawn -leaveopen $id" result2] + set result [catch "spawn -ignore SIGHUP -leaveopen $id" result2] } # Prepend "-" to each pid, to generate the "process group IDs" needed by # kill. -- System Information: Debian Release: 7.8 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.2.0-4-amd64 (SMP w/4 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages dejagnu depends on: ii dpkg 1.16.15 ii expect 5.45-2 ii install-info 4.13a.dfsg.1-10 dejagnu recommends no packages. dejagnu suggests no packages. -- debconf-show failed -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org