From: Tomi Ollila <tomi.ollila@iki.fi>
To: Daniel Kahn Gillmor <dkg@fifthhorseman.net>,
Notmuch Mail <notmuch@notmuchmail.org>
Subject: Re: [PATCH] test: avoid hanging older gdb under GNU timeout and moreutils parallel
Date: Tue, 21 May 2019 09:12:12 +0300 [thread overview]
Message-ID: <m2ftp8xrnn.fsf@guru.guru-group.fi> (raw)
In-Reply-To: <20190521010304.417-1-dkg@fifthhorseman.net>
On Mon, May 20 2019, Daniel Kahn Gillmor wrote:
>
> A marginally cleaner patch be to consistently use gdb with either one
> of:
>
> * -tty /dev/null
> * < /dev/null
This looks like a good read:
https://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_21.html
and is used to speculate below.
I also run the following commands:
trace gdb --batch
strace -ox gdb --batch
strace -oy gdb --batch </dev/null
strace -oz gdb --batch --tty=/dev/null
strace -of gdb --batch </dev/null >/dev/null
strace -og gdb --batch </dev/null >/dev/null 2>/dev/null
and then looked for ioctl() calls in created output file.
the latest (-og) was the only one where gdb(1) was not able
to mess with tty (i.e. even gdb had tty it did not try to
find it on its fd's or open("/dev/tty")...
when run in parallel(1), all the other have possibility to
mess w/ tty *at the same time* if winds are favorable -- but
that means that
1) process had controlling tty before running parallel
2) processes parallel run had controlling tty (same tty)
I did not check this.
> 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.
In T050 and T060, IIUC the above link, -tty /dev/null makes the inferior
process have /dev/null in its stdin, stdout and stderr -- so there is
no output (I tested T050, not even looked T060).
It is strange that T070 does not work. < /dev/null should only affect
the gdb(1) itself, and not the inside redirection -- but would have to
dig deeper to understand and just now I don't have time...
... anyway all stdin, stdout and stderr should be redirected if --tty
option is not used (or even then, look above), to avoid potential
mess w/ controlling tty possibly shared with other processes...
Tomi
>
> 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
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> https://notmuchmail.org/mailman/listinfo/notmuch
next prev parent reply other threads:[~2019-05-21 6:12 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 ` [PATCH] test: avoid hanging older gdb under GNU timeout and moreutils parallel Daniel Kahn Gillmor
2019-05-21 2:32 ` David Bremner
2019-05-21 15:45 ` Daniel Kahn Gillmor
2019-05-21 6:12 ` Tomi Ollila [this message]
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=m2ftp8xrnn.fsf@guru.guru-group.fi \
--to=tomi.ollila@iki.fi \
--cc=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).