From 3f749e93db4f6bf10beb73d8d5d523d0e3b036e3 Mon Sep 17 00:00:00 2001 From: Azat Khuzhin Date: Thu, 10 Sep 2015 13:38:58 +0300 Subject: [PATCH] test: fix bufferevent/bufferevent_pair_release_lock in debug mode After this test had been fixed for freebsd the debug build was broken because we can't call evthread_set_lock_callbacks() when something already initialized, and we can't call event_base_free() (in kqueue case) when it is initialized, because of "held_by", but this only playing role during freeing lock profiler so reset lock callbacks there before and this will fix both. Fixes: 79f9ace4ae8a259a5cf1b4ff3869078b60ff16a1 ("test: fix bufferevent/bufferevent_pair_release_lock for freebsd") P.S. after this patch 'make verify' finishes without errors on freebsd. --- test/regress_bufferevent.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/regress_bufferevent.c b/test/regress_bufferevent.c index 989778d9..2599cdd9 100644 --- a/test/regress_bufferevent.c +++ b/test/regress_bufferevent.c @@ -276,14 +276,13 @@ static int trace_lock_unlock(unsigned mode, void *lock_) } static void lock_unlock_free_thread_cbs(void) { - /** drop immutable flag */ - evthread_set_lock_callbacks(NULL); - event_base_free(NULL); if (libevent_tests_running_in_debug_mode) libevent_global_shutdown(); + /** drop immutable flag */ + evthread_set_lock_callbacks(NULL); /** avoid calling of event_global_setup_locks_() for new cbs */ libevent_global_shutdown(); /** drop immutable flag for non-debug ops (since called after shutdown) */ @@ -315,6 +314,9 @@ static int use_lock_unlock_profiler(void) } static void free_lock_unlock_profiler(struct basic_test_data *data) { + /** fix "held_by" for kqueue */ + evthread_set_lock_callbacks(NULL); + lock_unlock_free_thread_cbs(); free(lu_base.locks); data->base = NULL; -- 2.50.1