mirror of
https://github.com/reactos/syzkaller.git
synced 2025-02-20 19:40:43 +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 {
|
if merger.tee != nil {
|
||||||
merger.tee.Write(out)
|
merger.tee.Write(out)
|
||||||
}
|
}
|
||||||
merger.Output <- append([]byte{}, out...)
|
select {
|
||||||
r := copy(pending[:], pending[pos+1:])
|
case merger.Output <- append([]byte{}, out...):
|
||||||
pending = pending[:r]
|
r := copy(pending[:], pending[pos+1:])
|
||||||
|
pending = pending[:r]
|
||||||
|
default:
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -52,7 +55,10 @@ func (merger *OutputMerger) Add(r io.ReadCloser) {
|
|||||||
if merger.tee != nil {
|
if merger.tee != nil {
|
||||||
merger.tee.Write(pending)
|
merger.tee.Write(pending)
|
||||||
}
|
}
|
||||||
merger.Output <- pending
|
select {
|
||||||
|
case merger.Output <- pending:
|
||||||
|
default:
|
||||||
|
}
|
||||||
}
|
}
|
||||||
r.Close()
|
r.Close()
|
||||||
merger.wg.Done()
|
merger.wg.Done()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user