pty/tty or signal strangeness, or grep/bsdgrep bug?
Jeremy Chadwick
jdc at koitsu.org
Thu Oct 25 08:46:06 UTC 2012
On Thu, Oct 25, 2012 at 09:45:11AM +0200, Ed Schouten wrote:
> 2012/10/23 Ed Schouten <ed at 80386.nl>:
> > Will try to come up with a decent patch tomorrow evening.
>
> Ahem; the day after tomorrow. Jeremy, could you please try the following patch?
>
> http://80386.nl/pub/tty-bg-read.txt
>
> I decomposed the TTY read routine into four separate functions to
> improve clarity. While this was initially true, I think it's a pity
> the four functions are constantly becoming a bit more complex.
>
> The same issue is also present on the output path, but I have no idea
> how realistic/hard it is to fix this issue. Also, it might not really
> be an issue in practice. If you do a large write and become a
> non-foreground process group, you might be able to circumvent TOSTOP
> while the write() is in transit.
>
> Fixing this might be tedious, because we currently enforce that writes
> to a TTY are serialized. Blocking inside the write() might then cause
> a deadlock. But in my opinion, I would prefer the serialization over
> the enforcing of TOSTOP.
After the patch, testing with grep and cat, and checking cv/state for
the latter case:
(01:30:39 jdc at icarus) ~ $ csh
% grep -r "-2011" . &
[1] 1964
% jobs
[1] + Suspended (tty input) grep -r -2011 .
% fg
grep -r -2011 .
^C
% jobs
% grep -r "-2011" .
^Z
Suspended
% bg
[1] grep -r -2011 . &
[1] + Suspended (tty input) grep -r -2011 .
% fg
grep -r -2011 .
^C
% cat &
[1] 2042
% jobs
[1] + Suspended (tty input) cat
% ps -auxwU jdc | grep cat
jdc 2042 0.0 0.0 9908 1496 1 T 1:34AM 0:00.00 cat
jdc 2044 0.0 0.0 16268 1864 1 S+ 1:34AM 0:00.00 grep cat
% top -b -U jdc | grep cat
2042 jdc 1 20 0 9908K 1496K STOP 0 0:00 0.00% cat
2047 jdc 1 20 0 16268K 1864K piperd 0 0:00 0.00% grep cat
% fg
cat
^C
% exit
I do not get dropped characters or witness any other anomalies. I
tested behaviour with /bin/sh, as well as bash. All seems good.
> Thanks again for reporting the issue!
No, thank *you* and others for looking + fixing it! :-)
I assume a commit to HEAD + MFC in 2 weeks is in order?
I'll update the PR with this part of our mail thread.
--
| Jeremy Chadwick jdc at koitsu.org |
| UNIX Systems Administrator http://jdc.koitsu.org/ |
| Mountain View, CA, US |
| Making life hard for others since 1977. PGP 4BD6C0CB |
More information about the freebsd-stable
mailing list