-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Not sure if 1.3b has my signal patch in it; but I believe I paid
attention so that all the internal signal events are deleted properly
(on event-base-free). Could be my mistake still, but are you sure that
the bug still exists in libevent-trunk?

The reason I think its different, is that with my patch (which is in
trunk for sure), multiple event bases will use multiple internal events
for signal handling where libevent-1.1 would use only one internal event
ever. And the bases would clean up their events on free (at least - that
is the theory of operation :-) ).

Best regards,
   Wouter

Scott Lamb wrote:
> 
> On May 28, 2007, at 8:28 AM, Jesse Keller wrote:
> 
>> Just implemented libevent in a new program using the cool eventxx C++
>> wrapper.  Anyway, I decided to track down the event_base_free bug a
>> little more.  Here's the original bug and patch.
>>
>> http://monkeymail.org/archives/libevent-users/2006-April/000141.html
>>
>> Seems that we don't need to go through all that effort of fixing the
>> symptom, it's just that the internal event between the signal handler
>> and the dispatcher is never deleted.
>>
>> Here's the patch that fixes the problem for me (versus the 1.3b release)
>>
>>
>> --- signal.c    2007-03-03 23:05:07.000000000 -0500
>> +++ signal.c.new        2007-05-28 11:10:57.000000000 -0400
>> @@ -143,6 +143,11 @@
>>         int evsignal;
>>
>>         evsignal = EVENT_SIGNAL(ev);
>> +
>> +       if (ev_signal_added) {
>> +               ev_signal_added = 0;
>> +               event_del(&ev_signal);
>> +       }
>>
>>         return (sigaction(EVENT_SIGNAL(ev),(struct sigaction *)SIG_DFL,
>> NULL));
>>  }
> 
> But ev_signal is for the pipe used to wake up on receipt of *any*
> signal. Consider this code snippet:
> 
>     signal_set(&ev1, SIGUSR1, signal_cb, NULL);
>     event_add(&ev1, NULL);
>     signal_set(&ev2, SIGUSR2, signal_cb, NULL);
>     event_add(&ev2, NULL);
>     event_del(&ev2);
> 
>     raise(SIGUSR1);
>     event_dispatch(EVLOOP_ONCE);
> 
> without your change, the dispatch would return immediately. With your
> change, it would wait until timeout.
> 
> --Scott Lamb <http://www.slamb.org/>
> _______________________________________________
> Libevent-users mailing list
> Libevent-users@monkey.org
> http://monkey.org/mailman/listinfo/libevent-users

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFGW9nikDLqNwOhpPgRAkVuAJ93LjcTFeIuEw5jecLf/05LRl0F8QCeIVe2
9DRVVVs8aDY3DzjTBwLepXo=
=Gllv
-----END PGP SIGNATURE-----
_______________________________________________
Libevent-users mailing list
Libevent-users@monkey.org
http://monkey.org/mailman/listinfo/libevent-users

Reply via email to