diff --git a/servers/lloadd/connection.c b/servers/lloadd/connection.c index e1b4c39019..886a2b6a83 100644 --- a/servers/lloadd/connection.c +++ b/servers/lloadd/connection.c @@ -128,6 +128,11 @@ handle_pdus( void *ctx, void *arg ) } break; } + + assert( IS_ALIVE( c, c_refcnt ) ); + epoch_leave( epoch ); + epoch = epoch_join(); + assert( IS_ALIVE( c, c_refcnt ) ); } event_add( c->c_read_event, c->c_read_timeout ); diff --git a/servers/lloadd/epoch.h b/servers/lloadd/epoch.h index b5ae045008..89f0bc4b26 100644 --- a/servers/lloadd/epoch.h +++ b/servers/lloadd/epoch.h @@ -132,6 +132,7 @@ int try_release_ref( uintptr_t *refp, void *object, dispose_cb *cb ); */ #define RELEASE_REF( object, ref_field, cb ) \ do { \ + assert( IS_ALIVE( (object), ref_field ) ); \ if ( !__atomic_sub_fetch( \ &(object)->ref_field, 1, __ATOMIC_ACQ_REL ) ) { \ epoch_append( object, (dispose_cb *)cb ); \