On Wed, Aug 11, 2010 at 12:00:09PM -0700, Gilad Benjamini wrote: > My code currently runs with libevent 1.4 > While in the process of upgrading to libevent 2.0.6 I got a segfault. > > Code sample is pretty basic > event_set(&ev,fd,EV_READ,fd_handler,NULL) ; > event_del(&ev) ; > > The reason for the crash is pretty simple as well. event_del calls > EVBASE_ACQUIRE_LOCK which assume that ev->ev_base is non NULL. > > This code sample does skip the mandatory event_init, but event_del should be > more cautious nevertheless. >
Why? You'd rather the code do an admittedly needless check millions, possibly billions of times per process? Windows mutexes don't support static initialization, so much worse things--silent failures--might happen w/o explicit initializing. I don't use libevent 2.0 so am unsure how locking is implemented, but that's just one possible example. Perhaps a better solution would be to use environment-specific extensions such as __attribute__((constructor)) to do the initializing as a convenience for the lazy amongst us. (And who isn't? ;) But even that is pushing it. *********************************************************************** To unsubscribe, send an e-mail to majord...@freehaven.net with unsubscribe libevent-users in the body.