mirror of
https://github.com/reactos/syzkaller.git
synced 2025-02-18 18:47:55 +00:00
vm: fix potential deadlock in OutputMerger
This commit is contained in:
parent
e9d2eec662
commit
26a5cf9efa
14
vm/merger.go
14
vm/merger.go
@ -41,9 +41,12 @@ func (merger *OutputMerger) Add(r io.ReadCloser) {
|
||||
if merger.tee != nil {
|
||||
merger.tee.Write(out)
|
||||
}
|
||||
merger.Output <- append([]byte{}, out...)
|
||||
r := copy(pending[:], pending[pos+1:])
|
||||
pending = pending[:r]
|
||||
select {
|
||||
case merger.Output <- append([]byte{}, out...):
|
||||
r := copy(pending[:], pending[pos+1:])
|
||||
pending = pending[:r]
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
@ -52,7 +55,10 @@ func (merger *OutputMerger) Add(r io.ReadCloser) {
|
||||
if merger.tee != nil {
|
||||
merger.tee.Write(pending)
|
||||
}
|
||||
merger.Output <- pending
|
||||
select {
|
||||
case merger.Output <- pending:
|
||||
default:
|
||||
}
|
||||
}
|
||||
r.Close()
|
||||
merger.wg.Done()
|
||||
|
Loading…
x
Reference in New Issue
Block a user