On 22/08/2012 02:26, David Holmes wrote:

I was going to make a similar request. Some context for the problem and solution makes reviewing a lot easier.

In this case as I understand it between checking the fd for the door call and making the door call, someone can call detach, and so we get EBADF. The detach is synchronized on this, so the fix moves the enqueue inside the sync block so that it has to complete before anyone can call detach.
The detach method is specified so that the behavior for this case is implementation-specific so Dmitriy's change is okay, it's just that I assume the detach will block indefinitely in the event that the target VM does not respond to a command. With a bit of work then I think we can change this code to support asynchronous detach, probably using the usual dup2 trick that we do elsewhere in the libraries. The question is whether it's worth doing as the scenario is only likely to arise with tests, not the simple command-line tools. So I think the proposed change is okay for now, we should just make sure to submit an RFE to remember to re-visit this again in the future.

-Alan

Reply via email to