Index: b/apps/app_queue.c
===================================================================
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -8271,8 +8271,6 @@ static void handle_hangup(void *userdata
 	caller_snapshot = ast_channel_snapshot_get_latest(queue_data->caller_uniqueid);
 	member_snapshot = ast_channel_snapshot_get_latest(queue_data->member_uniqueid);
 
-	ao2_unlock(queue_data);
-
 	ast_debug(3, "Detected hangup of queue %s channel %s\n", reason == CALLER ? "caller" : "member",
 			channel_blob->snapshot->base->name);
 
@@ -8281,6 +8279,8 @@ static void handle_hangup(void *userdata
 		(long) (queue_data->starttime - queue_data->holdstart),
 		(long) (time(NULL) - queue_data->starttime), queue_data->caller_pos);
 
+	ao2_unlock(queue_data);
+
 	update_queue(queue_data->queue, queue_data->member, queue_data->callcompletedinsl,
 			queue_data->starttime);
 	send_agent_complete(queue_data->queue->name, caller_snapshot, member_snapshot, queue_data->member,
