-
Notifications
You must be signed in to change notification settings - Fork 83
Open
Labels
Description
Hello.
I've noticed that the worker-connection sometimes freezes.
The reason for this is an unhandled io.ErrShortWrite error caused inside agent.write().
The writer throws this error when a worker-go-routine writes "dtWorkComplete" just after the main-thread receives a "dtNoop" but before sending "dtPreSleep".
In other words:
dtNoop
dtWorkComplete
dtPreSleep
This causes the issue because the go-routine is missing a synclock inside worker.exec().
I've solved this by changing:
inpack.a.write(outpack)
into
inpack.a.Lock()
err := inpack.a.write(outpack)
inpack.a.Unlock()