git: dsynth - Fix master/slave pty race on fork()
Matthew Dillon
dillon at crater.dragonflybsd.org
Sun Aug 25 12:27:15 PDT 2019
commit 168bca188b0a50fca2f82a65255dd569abd42abf
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sun Aug 25 12:23:37 2019 -0700
dsynth - Fix master/slave pty race on fork()
* If we try to re-open the slave in the forked child of the WORKER monitor,
the worker monitor may race the child when it tries to read from the
master side fd before the child has opened the slave, causing an error.
* If we re-open the slave in the WORKER monitor then the worker monitor
must not block when it close()s the slave descriptor after forking a
child. But it will if the child has written anything.
The solution is to re-open the slave in the master but to have the
master write 1 char to the slave after close()ing the slavefd. The
forked slave will read this character before proceeding, thus ensuring
that there is no output in the buffer when the master close()es
its slavefd.
Summary of changes:
usr.bin/dsynth/build.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/168bca188b0a50fca2f82a65255dd569abd42abf
--
DragonFly BSD source repository
More information about the Commits
mailing list