diff --git a/main/astobj2_container.c b/main/astobj2_container.c
index d0abc7985f7e048965ca24d9bfa7b011ef9cef00..07d10b9f936fe1dde1f6fd9d6661bb8079c382da 100644
--- a/main/astobj2_container.c
+++ b/main/astobj2_container.c
@@ -510,6 +510,12 @@ struct ao2_iterator ao2_iterator_init(struct ao2_container *c, int flags)
 
 void ao2_iterator_restart(struct ao2_iterator *iter)
 {
+	if (!is_ao2_object(iter->c)) {
+		ast_log(LOG_ERROR, "Iterator container is not valid.\n");
+		ast_assert(0);
+		return;
+	}
+
 	/* Release the last container node reference if we have one. */
 	if (iter->last_node) {
 		enum ao2_lock_req orig_lock;
diff --git a/main/astobj2_hash.c b/main/astobj2_hash.c
index 76259dc7ffc33d1d00bb7dbcf4176dcd758be5b1..110dd1602c916e4d4f54a201d8ed9afb6b3677a9 100644
--- a/main/astobj2_hash.c
+++ b/main/astobj2_hash.c
@@ -186,6 +186,8 @@ static void hash_ao2_node_destructor(void *v_doomed)
 		 * same node.
 		 */
 		my_container = (struct ao2_container_hash *) doomed->common.my_container;
+		ast_assert(is_ao2_object(my_container));
+
 		__adjust_lock(my_container, AO2_LOCK_REQ_WRLOCK, 1);
 
 #if defined(AO2_DEBUG)
diff --git a/main/astobj2_rbtree.c b/main/astobj2_rbtree.c
index a069c408e1737f6a13a7573d7461764742ecaf87..d3a9025720b83d2b79b2fd281c1952942c718037 100644
--- a/main/astobj2_rbtree.c
+++ b/main/astobj2_rbtree.c
@@ -878,6 +878,8 @@ static void rb_ao2_node_destructor(void *v_doomed)
 		 * same node.
 		 */
 		my_container = (struct ao2_container_rbtree *) doomed->common.my_container;
+		ast_assert(is_ao2_object(my_container));
+
 		__adjust_lock(my_container, AO2_LOCK_REQ_WRLOCK, 1);
 
 #if defined(AO2_DEBUG)