[Toybox] [PATCH] Fix pidof tests when stdout is a socket

Colin Cross ccross at google.com
Tue Oct 10 11:30:30 PDT 2023


On Tue, Oct 10, 2023 at 11:28 AM Colin Cross <ccross at google.com> wrote:
>
> The pidof tests try to block a subprocess forever by reading from
> stdout via /proc/self/fd/1.  This works for most stdout fds, but
> fails if stdout is a socket, which happens when running the tests
> in a sandbox in the Android build.  Create a named fifo and read
> on that instead.
> ---
>  tests/pidof.test | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)

I forgot to include, this can be reproduced outside the sandbox by
using socat to make stdout a socket:

$ socat - EXEC:"scripts/test.sh pidof"
pidof:generated/{flags.h}
Compile generated/testdir/pidof
.....
./pidof-639615.test: line 2: /proc/self/fd/1: No such device or address
PASS: pidof short argv[1]
FAIL: pidof short argv[1] -x
echo -ne '' | "/usr/local/google/home/ccross/ssd/aosp/external/toybox/generated/testdir/pidof"
-x pidof-639615.test
--- expected 2023-10-10 11:29:58.370076418 -0700
+++ actual 2023-10-10 11:29:58.370076418 -0700
@@ -1 +0,0 @@
-639770
2023/10/10 11:29:58 socat[639614] E waitpid(): child 639615 exited with status 1


More information about the Toybox mailing list