diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2020-08-27 14:48:08 +0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2020-08-27 14:50:51 +0200 |
commit | a0f19d9f3a009961869a077922f15986ce05738e (patch) | |
tree | 5f76da103a1250166d3f32364831134ac0603428 /src/libutil | |
parent | 3ccf3801fb1c3aac6a170318d367bc2e75ac590e (diff) |
RemoteStore::addToStore(): Fix race between stderrThread and NAR writer
As pointed out by @B4dM4n, the call to to.flush() on stderrThread is
unsafe because the NAR writer thread is also writing to 'to'.
Fixes #3943.
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/serialise.hh | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libutil/serialise.hh b/src/libutil/serialise.hh index 69ae0874a..8f17bc34c 100644 --- a/src/libutil/serialise.hh +++ b/src/libutil/serialise.hh @@ -23,7 +23,8 @@ struct Sink }; -/* A buffered abstract sink. */ +/* A buffered abstract sink. Warning: a BufferedSink should not be + used from multiple threads concurrently. */ struct BufferedSink : virtual Sink { size_t bufSize, bufPos; @@ -66,7 +67,8 @@ struct Source }; -/* A buffered abstract source. */ +/* A buffered abstract source. Warning: a BufferedSink should not be + used from multiple threads concurrently. */ struct BufferedSource : Source { size_t bufSize, bufPosIn, bufPosOut; |