[PATCH] test: avoid hanging older gdb under GNU timeout and moreutils parallel
Tomi Ollila
tomi.ollila at iki.fi
Mon May 20 23:12:12 PDT 2019
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 at 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 at notmuchmail.org
> https://notmuchmail.org/mailman/listinfo/notmuch
More information about the notmuch
mailing list