capnproto / go-capnp

Cap'n Proto library and code generator for Go

Home Page:https://capnproto.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Incorrect locking in question.PipelineSend

zenhack opened this issue · comments

Conn.sendMessage()'s comment states that the caller must be holding the lock, but question.PipelineSend invokes it in an explicit call to syncutil.Without. Unfortunately, just removing it deadlocks, since the nested call to newPipelineCallMessage tries to acquire the lock. This needs to be reworked so we're following all contracts.

The same thing is happening in importClient.Send w/ newImportCallMessage