[zeromq-dev] zmq::signaler_t::make_fdpair hangs application on crash

Pieter Hintjens ph at imatix.com
Sat Nov 9 10:36:10 CET 2013


Hi Felipe,

Can you reproduce the case? If you can make a patch and test case, we
can backport this to 4.0 and 3.2 stable if it applies there.

-Pieter

On Fri, Nov 8, 2013 at 8:46 PM, Felipe Farinon
<felipe.farinon at powersyslab.com> wrote:
> In windows, the code that creates a mutual exclusive section uses the
> 'Event' mechanism.
>
>      HANDLE sync = CreateEvent (&sa, FALSE, TRUE, TEXT
> ("Global\\zmq-signaler-port-sync"));
>      if (sync == NULL && GetLastError () == ERROR_ACCESS_DENIED)
>        sync = OpenEvent (SYNCHRONIZE | EVENT_MODIFY_STATE, FALSE, TEXT
> ("Global\\zmq-signaler-port-sync"));
>
>      win_assert (sync != NULL);
>
>      //  Enter the critical section.
>      DWORD dwrc = WaitForSingleObject (sync, INFINITE);
>      zmq_assert (dwrc == WAIT_OBJECT_0);
>
>      // Some code here...
>
>      brc = SetEvent (sync);
>      brc = CloseHandle (sync);
>
>
> win_assert and zmq_asserts abort the program if the conditions passed to
> them aren't met. If the program is aborted before calling 'SetEvent' on
> sync, the event is unsetted forever and all zeromq applications that
> call this code will block on 'WaitForSingleObject'. A preferred way to
> handle this is using 'Mutex' since if this scenario happens,
> WaitForSingleObject will not freeze forever but will return WAIT_ABANDONED.
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev



-- 
-
Pieter Hintjens
CEO of iMatix.com
Founder of ZeroMQ community
blog: http://hintjens.com



More information about the zeromq-dev mailing list