On Thu, Mar 26, 2015 at 03:08:36PM +0000, Emmanuel Dreyfus wrote: > On Thu, Mar 26, 2015 at 02:00:19PM +0000, Emmanuel Dreyfus wrote: > > changelog_rpc_poller() contains a call to event_dispatch(). Here we have > > our difference between NetBSD and Linux: the former uses poll, while the > > later uses epoll. > > In event_dispatch_poll() I think there is a race condition: > event_pool->destroy can be set after the test, and we can > enter event_dispatch_poll_resize with the flag set: > > pthread_mutex_lock (&event_pool->mutex); > { > if (event_pool->destroy == 1) { > event_pool->activethreadcount = 0; > pthread_cond_broadcast (&event_pool->cond); > pthread_mutex_unlock (&event_pool->mutex); > return 0; > } > } > pthread_mutex_unlock (&event_pool->mutex); > > size = event_dispatch_poll_resize (event_pool, ufds, size); > > event_dispatch_poll_resize() performs allocations on pointers that may > be dandling. One solution could be to move it inside event_pool->mutex > critical section. > > I will try this on nbslave70. That looks like a possible issue indeed. Maybe we can reproduce this on Linux too with ./configure --disable-epoll. On top of that, I just posted a patch that writes some memory markers at the location passed to GF_FREE(). Please see if http://review.gluster.org/10019 could be helpful in this or similar cases. Niels _______________________________________________ Gluster-devel mailing list Gluster-devel@xxxxxxxxxxx http://www.gluster.org/mailman/listinfo/gluster-devel