[Bug 209509] EAGAIN on shell pipes / O_NONBLOCK error in kernel ?
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sat May 14 22:01:52 UTC 2016
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=209509
Bug ID: 209509
Summary: EAGAIN on shell pipes / O_NONBLOCK error in kernel ?
Product: Base System
Version: 11.0-CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: kern
Assignee: freebsd-bugs at FreeBSD.org
Reporter: phk at FreeBSD.org
I have a pretty trivial program here, which quite reliably will receive EAGAIN
on stdout/stderr when these are a shell created pipe.
The command is run as:
aardwarc stow |& tee /tmp/__
It does two popens, and chats with those two programs (ssh and mtree).
Here is from a ktrace:
First, checking that stderr & stdout are not O_NONBLOCK:
16131 aardwarc CALL fcntl(0x1,F_GETFL,0xffffe5bc)
16131 aardwarc RET fcntl 2
[...]
16131 aardwarc CALL fcntl(0x2,F_GETFL,0xffffe5bc)
16131 aardwarc RET fcntl 2
Then after a lot of output on stdout/stderr:
16131 aardwarc CALL write(0x1,0x7fffffffdd80,0x7e)
16131 aardwarc RET write -1 errno 35 Resource temporarily unavailable
[...]
16131 aardwarc CALL write(0x2,0x7fffffffde90,0x16)
16131 aardwarc GIO fd 2 wrote 22 bytes
[...]
16131 aardwarc CALL write(0x2,0x7fffffffddb0,0x9)
16131 aardwarc GIO fd 2 wrote 9 bytes
[...]
16131 aardwarc CALL write(0x2,0x7fffffffdd70,0x44)
16131 aardwarc RET write -1 errno 35 Resource temporarily unavailable
Presumably these are the same struct file, so it notable that stdout gets
EAGAIN, the stderr manages two writes, then stderr also gets EAGAIN.
AMD64, CURRENT, r297556
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list