[zeromq-dev] race condition in pipe?
sustrik at fastmq.com
Mon Apr 13 07:17:02 CEST 2009
> writer_terminated in pipe sends term_ack to other thread and proceeds
> to reset pointers.
> However, on receiving term_ack api_thread deletes the pipe in
> terminate_pipe_ack (in engine_base.hpp)
> I think its possible to have a race condition here, and
> writer_terminated to could actually endup writing to deallocated
This is probably the most complex part of the code. I've uploaded some
sequence diagrams here:
I believe that writer_terminated gets called before reader_terminated
(deallocation of the pipe) in all cases.
Still, if you've found a race condition, write down exact sequence of
steps that causes the problem. We can start looking for the solution then.
More information about the zeromq-dev