Page MenuHomeFreeBSD

Fix handling of PIPE_EOF in the direct write path.
ClosedPublic

Authored by markj on Nov 6 2019, 5:11 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Jul 27, 8:27 AM
Unknown Object (File)
Sun, Jul 26, 1:28 PM
Unknown Object (File)
Mon, Jul 20, 3:04 AM
Unknown Object (File)
Sun, Jul 19, 6:55 PM
Unknown Object (File)
Sat, Jul 18, 12:39 PM
Unknown Object (File)
Fri, Jul 3, 6:04 AM
Unknown Object (File)
Jun 14 2026, 11:05 AM
Unknown Object (File)
Jun 11 2026, 2:43 PM
Subscribers

Details

Summary

Suppose a writing thread has pinned its pages and gone to sleep with
pipe_map.cnt > 0. Suppose that the thread is woken up by a signal (so
error != 0) and the other end of the pipe has simultaneously been
closed. In this case, to satisfy the assertion about pipe_map.cnt in
pipe_destroy_write_buffer(), we must mark the buffer as empty.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

This revision is now accepted and ready to land.Nov 6 2019, 8:01 PM

Peter, could you please test this patch?

Peter, could you please test this patch?

Sure.

I completed a full stress2 test with D22261.64008.diff.
The only problem I saw was this (unrelated) panic: https://people.freebsd.org/~pho/stress/log/mark107.txt

In D22261#487620, @pho wrote:

I completed a full stress2 test with D22261.64008.diff.
The only problem I saw was this (unrelated) panic: https://people.freebsd.org/~pho/stress/log/mark107.txt

Could you make the vmcore+kernel for this one available?

This revision was automatically updated to reflect the committed changes.