[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120402144611.GY3029@vicerveza.homeunix.net>
Date: Mon, 2 Apr 2012 16:46:11 +0200
From: Lluís Batlle i Rossell <viric@...ic.name>
To: linux-kernel@...r.kernel.org
Subject: Hang opening a pipe written to by a child, with SIGCHLD
Hello,
I had troubles running a simple bash script where a child wrote to a named pipe
before dying, and the parent opened and read the pipe.
On a computer, my script hangs always. Also under 'strace'. Not under 'strace
-f'. Thinking of some race, I wrote a small script that hangs in the linuxes I
could try (3.2.11 now):
----------
#!/var/run/current-system/sw/bin/bash
PIPE=/tmp/pipe
rm -f $PIPE
mkfifo $PIPE
function spawn {
echo DONE > $PIPE
}
spawn sleep 1 &
while true; do
echo reading
while read LINE < $PIPE; do
echo $LINE
spawn &
done
done
-------------
bash uses SA_RESTART on SIGCHLD handler, and nevertheless the script halts at
printing some amount of 'DONE'. Strace shows it's inside the open() call, while the open
call has been interrupted by SIGCHLD. One of the computers I have hangs at the *first* DONE always, and that's why it's annoying to me.
Can anyone reproduce this?
Regards,
Lluís.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists