Hi Simon,
Thanks for the quick fix.
I tested both patches on AIX 7.3 with a 64-bit GDB configured without
Python, running gdb.base/shell.exp with
"gmake check RUNTESTFLAGS=gdb.base/shell.exp". I ran it with the test
programs built with both -maix64 and -maix32.
expected unexpected unresolved
passes failures
original GDB + new test 112 4 9
patches 1 + 2, -maix64 121 4 0
patches 1 + 2, -maix32 121 4 0
Without the fix, the new test reproduces the problem every time. The log
shows:
(gdb) pipe lots | exit 0
ERROR: GDB process no longer exists
GDB process exited with wait status ... CHILDKILLED SIGPIPE {write on pipe with no readers}
After that GDB is gone, so the 9 checks in test_pipe_reader_exits_early
are all reported as UNRESOLVED. This is the same failure that gave me
75 unresolved results in a full 32-bit run of gdb.base. There it
happened on the first pipe test, so the rest of shell.exp was lost. With
the patches applied the test passes and there are no unresolved results.
The 4 remaining failures in shell.exp are not caused by your patches:
1: shell interrupt exitcode
2: shell interrupt exitsignal
3: pipe interrupt exitcode
4: pipe interrupt exitsignal
They fail the same way without the patches. The tests run "kill -2 $$"
under the shell and expect $_shell_exitsignal = 2. On AIX, /bin/sh and
/usr/bin/ksh are ksh88, which catches SIGINT and calls exit (130)
(128 + 2) instead of dying from the signal. GDB then sees a normal exit,
sets $_shell_exitcode = 130 and leaves $_shell_exitsignal void. I
checked the raw wait status of each shell:
/usr/bin/ksh exited, code 130
/usr/bin/ksh93 killed by signal 2
/usr/bin/bash killed by signal 2
So GDB reports what happened correctly, and the test assumes a shell
that dies from the signal. "shell" and "!" use $SHELL, and running with
SHELL=/usr/bin/bash makes those two [1 and 2] tests pass.
Do you think it would make sense to handle the ksh88 behaviour in a separate test-suite patch, by
accepting $_shell_exitcode = 130
and $_shell_exitsignal = void
on AIX??
Otherwise, patches 1 and 2 works
on AIX.
Thanks,
Aditya