https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260938
Bug ID: 260938
Summary: script(1) hangs when child doesn't read input fast
enough
Product: Base System
Version: 13.0-RELEASE
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: bin
Assignee: [email protected]
Reporter: [email protected]
Created attachment 230710
--> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=230710&action=edit
Above core dump, zstd compressed
If there's enough input and the child doesn't read it in fast enough, script(1)
deadlocks on stdin to the child against the child writing to its stdout.
This is a regression from 4.4BSD-Lite, brought on by replacing the 2-process
model (i.e.
leader: stdin -> master pty
child: master pty -> stdout/fscript
subchild: the command
) with a single process and select(2); writes to the master pty don't seem to
shard, and block forever; the child cannot continue because it's blocked on
writing its own data.
This is the same bug as in util-linux's implementation (though that uses
poll(2)), so please see this Debian bug for more words on the topic:
https://bugs.debian.org/1003095
Attaching core I got after ^\ing and trace from
ktrace script /dev/null sh -c 'for i in $(seq 10); do echo $i; done; read -r
a; echo a=$a' < lc
wherein lc is
b64encode /lib/libc.so.7 /lib/libc.so.7 > lc
uname -a says "FreeBSD build 13.0-RELEASE-p4 FreeBSD 13.0-RELEASE-p4 #0: Tue
Aug 24 07:33:27 UTC 2021
[email protected]:/usr/obj/usr/src/amd64.amd64/sys/GENERIC
amd64"
--
You are receiving this mail because:
You are the assignee for the bug.