[zeromq-dev] possible bug in CZMQ's zloop_start .... with fix

Pieter Hintjens ph at imatix.com
Sun Dec 27 10:41:08 CET 2015


Looks good. Thanks for taking the time to make this patch.

-Pieter

On Sun, Dec 27, 2015 at 12:00 AM, Steven Butner <butner.se at gmail.com> wrote:
> On 12/25/2015 3:00 AM, zeromq-dev-request at lists.zeromq.org wrote:
>> Send zeromq-dev mailing list submissions to
>>       zeromq-dev at lists.zeromq.org
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>>       http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> or, via email, send a message with subject or body 'help' to
>>       zeromq-dev-request at lists.zeromq.org
>>
>> You can reach the person managing the list at
>>       zeromq-dev-owner at lists.zeromq.org
>>
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of zeromq-dev digest..."
>>
>>
>> Today's Topics:
>>
>>     1. Re: possible bug in CZMQ's zloop_start .... with fix
>>        (Pieter Hintjens)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1
>> Date: Thu, 24 Dec 2015 18:18:41 +0100
>> From: Pieter Hintjens <ph at imatix.com>
>> Subject: Re: [zeromq-dev] possible bug in CZMQ's zloop_start .... with
>>       fix
>> To: ZeroMQ development list <zeromq-dev at lists.zeromq.org>
>> Message-ID:
>>       <CADL5_sis3M=VnZY1gB=t4cWrtMQwbH=3wkFuwjHivafJ-1aNMA at mail.gmail.com>
>> Content-Type: text/plain; charset=UTF-8
>>
>> Sounds familiar; be sure to retest on CZMQ master and see it's not
>> been fixed there. If not, go ahead and send a pull request... :)
>>
>> On Wed, Dec 23, 2015 at 10:48 PM, Steven Butner <butner.se at gmail.com> wrote:
>>> I'm running CZMQ version 3.0.1 (though seemingly-identical code appears
>>> to be present in the newer version also) on an Ubuntu-14.04 LTS system
>>> running on x64 hardware.  The zloop_start() routine does not terminate
>>> when a ticket timer handler returns -1, yet the API description for CZMQ
>>> 3.0.1 says that the zloop_start routine "returns 0 if interrupted, -1 if
>>> canceled by a handler".
>>>
>>> Inspection of the source at zloop.c, line 780 shows that a return of -1
>>> from a ticket handler does indeed break out from the ticket-handling
>>> while loop but because the return code (-1, in this case) is not stored
>>> in "rc", the zloop_start() routine does not actually return.  Instead,
>>> on my system, it keeps polling.
>>>
>>> If I change the code at line 781 to be as below, then zloop_start()
>>> returns when a ticket timer handler returns -1 and the behavior seems to
>>> be as advertised in the API documentation.
>>>
>>> 775        //  Handle any tickets that have now expired
>>> 776        s_ticket_t *ticket = (s_ticket_t *) zlistx_first (self->tickets);
>>> 777        while (ticket && time_now >= ticket->when) {
>>> 778            if (self->verbose)
>>> 779                zsys_debug ("zloop: call ticket handler");
>>> 780            if (ticket->handler (self, 0, ticket->arg) == -1)
>>> 781               { rc = -1;   break; }     //  Timer handler signaled break
>>> 782            zlistx_delete (self->tickets, ticket->list_handle);
>>> 783            ticket = (s_ticket_t *) zlistx_next (self->tickets);
>>> 784        }
>>>
>>> Am I mis-understanding the intended behavior of zloop_start() in this
>>> case or is this, in fact, a bug?
>>>
>>> Thanks ....
>>>        Steve Butner
>>>
>>> _______________________________________________
>>> zeromq-dev mailing list
>>> zeromq-dev at lists.zeromq.org
>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
>> ------------------------------
>>
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
>>
>> End of zeromq-dev Digest, Vol 96, Issue 23
>> ******************************************
> Pieter:
>
> I have checked the version 3.0.2 master for CZMQ and found that it has
> the same bug.  Thus, per your suggestions in our previous email exchange
> I have created issue #1278 and pull request #1279.
>
> This is my first time contributing a fix for a bug.  I hope I did all of
> the steps of the C4 process correctly.  On my systems this change fixes
> the problem.
>
>        Steve Butner
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev



More information about the zeromq-dev mailing list