unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
To: Notmuch Mail <notmuch@notmuchmail.org>
Subject: [PATCH] test: avoid hanging older gdb under GNU timeout and moreutils parallel
Date: Mon, 20 May 2019 21:03:04 -0400	[thread overview]
Message-ID: <20190521010304.417-1-dkg@fifthhorseman.net> (raw)
In-Reply-To: <87mujgab6j.fsf@fifthhorseman.net>

This is an empirical fix for a strange interaction we're seeing
between gdb 7.12-6 on debian stretch, GNU timeout, and parallel from
moreutils, reported by Bremner in id:87ef56io5d.fsf@tethera.net.

The problem manifested itself as several concurrent test suite
subprocesses getting stopped by SIGTTOU (including some that don't use
gdb!), which ultimately caused a timeout for the test suite.

This problem itself does not appear to afflict the test suite when
using more modern version of gdb (e.g. 8.2.1-2 in debian buster), and
this fix doesn't cause any problems on newer versions of gdb either,
so it should be safe.

This fix was inspired by a comment from amdragon introduced back in
9ade8160a6a3f6f55996d7a58dc2cd81a6df8395 (now in
tests/T380-atomicity.sh) about an interaction between timeout and gdb.

A marginally cleaner patch be to consistently use gdb with either one
of:

 * -tty /dev/null
 * < /dev/null

in all of T050, T060, and T070.  But T070 can't use "< /dev/null"
because it needs stdin.  And when i tried to use "-tty /dev/null" in
T050 and T060, i got test suite failures that i wasn't able to
understand.

So, here is a patch that fixes the hanging problems on the older setup
without understanding them exactly.  I welcome any improvements or
actual understanding.

Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
---
 test/T050-new.sh    | 2 +-
 test/T060-count.sh  | 2 +-
 test/T070-insert.sh | 4 ++++
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/test/T050-new.sh b/test/T050-new.sh
index dfc8508f..9b3d41df 100755
--- a/test/T050-new.sh
+++ b/test/T050-new.sh
@@ -366,7 +366,7 @@ run
 EOF
 
 ${TEST_GDB} --batch-silent --return-child-result -x notmuch-new-vanish.gdb \
-    --args notmuch new 2>OUTPUT 1>/dev/null
+    --args notmuch new 2>OUTPUT 1>/dev/null </dev/null
 echo "exit status: $?" >> OUTPUT
 
 # Clean up the file in case gdb isn't available.
diff --git a/test/T060-count.sh b/test/T060-count.sh
index 0c0bf473..a393edb6 100755
--- a/test/T060-count.sh
+++ b/test/T060-count.sh
@@ -116,7 +116,7 @@ EOF
 backup_database
 test_begin_subtest "error message from query_search_messages"
 ${TEST_GDB} --batch-silent --return-child-result -x count-files.gdb \
-    --args notmuch count --output=files '*' 2>OUTPUT 1>/dev/null
+    --args notmuch count --output=files '*' 2>OUTPUT 1>/dev/null < /dev/null
 cat <<EOF > EXPECTED
 notmuch count: A Xapian exception occurred
 A Xapian exception occurred performing query
diff --git a/test/T070-insert.sh b/test/T070-insert.sh
index 05be473a..e30f0a43 100755
--- a/test/T070-insert.sh
+++ b/test/T070-insert.sh
@@ -267,12 +267,14 @@ for code in  FILE_NOT_EMAIL READ_ONLY_DATABASE UPGRADE_REQUIRED PATH_ERROR; do
     test_begin_subtest "EXIT_FAILURE when index_file returns $code"
     test_expect_code 1 \
          "${TEST_GDB} --batch-silent --return-child-result \
+	     -tty /dev/null \
 	     -ex 'set args insert < $gen_msg_filename' \
 	     -x index-file-$code.gdb notmuch"
 
     test_begin_subtest "success exit with --keep when index_file returns $code"
     test_expect_code 0 \
          "${TEST_GDB} --batch-silent --return-child-result \
+	     -tty /dev/null \
 	     -ex 'set args insert --keep < $gen_msg_filename' \
 	     -x index-file-$code.gdb notmuch"
 done
@@ -281,12 +283,14 @@ for code in OUT_OF_MEMORY XAPIAN_EXCEPTION ; do
     test_begin_subtest "EX_TEMPFAIL when index_file returns $code"
     test_expect_code 75 \
          "${TEST_GDB} --batch-silent --return-child-result \
+	     -tty /dev/null \
 	     -ex 'set args insert < $gen_msg_filename' \
 	     -x index-file-$code.gdb notmuch"
 
     test_begin_subtest "success exit with --keep when index_file returns $code"
     test_expect_code 0 \
          "${TEST_GDB} --batch-silent --return-child-result \
+	     -tty /dev/null \
 	     -ex 'set args insert --keep < $gen_msg_filename' \
 	     -x index-file-$code.gdb notmuch"
 done
-- 
2.20.1

  reply	other threads:[~2019-05-21  1:03 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-10 10:45 parallel tests broken on Debian stable David Bremner
2019-05-20 17:27 ` Daniel Kahn Gillmor
2019-05-20 18:55   ` Tomi Ollila
2019-05-20 21:45     ` Daniel Kahn Gillmor
2019-05-20 23:49   ` Daniel Kahn Gillmor
2019-05-21  0:44     ` Daniel Kahn Gillmor
2019-05-21  1:03       ` Daniel Kahn Gillmor [this message]
2019-05-21  2:32         ` [PATCH] test: avoid hanging older gdb under GNU timeout and moreutils parallel David Bremner
2019-05-21 15:45           ` Daniel Kahn Gillmor
2019-05-21  6:12         ` Tomi Ollila
2019-05-21 15:50           ` Daniel Kahn Gillmor
2019-05-21 20:23             ` Tomi Ollila
2021-10-30 19:30 ` parallel tests broken on Debian stable David Bremner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190521010304.417-1-dkg@fifthhorseman.net \
    --to=dkg@fifthhorseman.net \
    --cc=notmuch@notmuchmail.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).