diff --git a/src/libcamera/base/signal.cpp b/src/libcamera/base/signal.cpp
index 9df45d079a42..7e6a23cc909d 100644
--- a/src/libcamera/base/signal.cpp
+++ b/src/libcamera/base/signal.cpp
@@ -7,6 +7,7 @@
 
 #include <libcamera/base/signal.h>
 
+#include <libcamera/base/log.h>
 #include <libcamera/base/mutex.h>
 
 /**
@@ -35,6 +36,13 @@ void SignalBase::connect(BoundMethodBase *slot)
 	if (object)
 		object->connect(this);
 	slots_.push_back(slot);
+
+	/*
+	 * Slots are not expected to be used to connect many items. If we exceed
+	 * a reasonable amount, presume that there is a bug and fail fast on
+	 * debug builds.
+	 */
+	ASSERT(slots_.size() < 8);
 }
 
 void SignalBase::disconnect(Object *object)
