diff --git a/emper/strategies/AbstractWorkStealingScheduler.cpp b/emper/strategies/AbstractWorkStealingScheduler.cpp
index 0dbfb91c619057a030131c791710359ea76d052c..310131debd45f7d5acccb555e9f284681f6a39ad 100644
--- a/emper/strategies/AbstractWorkStealingScheduler.cpp
+++ b/emper/strategies/AbstractWorkStealingScheduler.cpp
@@ -294,6 +294,9 @@ auto AbstractWorkStealingScheduler::pushBottom(AbstractFiber& fiber) -> bool {
 			uint64_t queueLength = pushed.size;
 			awss::stats.recordScheduledToLocalAndQueueLength(queueLength);
 		}
+	} else if (!queueFullWarningEmitted) {
+		queueFullWarningEmitted = true;
+		LOGW("Pushing to queue failed: Queue full");
 	}
 	return pushed;
 }
diff --git a/emper/strategies/AbstractWorkStealingScheduler.hpp b/emper/strategies/AbstractWorkStealingScheduler.hpp
index 35f808937305384e206aefbf1de1704712e6e07c..9afead16bce5c3356b5b20bcad64c5363b6b6a99 100644
--- a/emper/strategies/AbstractWorkStealingScheduler.hpp
+++ b/emper/strategies/AbstractWorkStealingScheduler.hpp
@@ -28,6 +28,8 @@ class AbstractWorkStealingScheduler : public Scheduler {
 	auto nextFiberViaAnywhereQueue() -> std::optional<NextFiberResult>;
 	auto tryStealFiberFrom(workerid_t victim) -> std::optional<NextFiberResult>;
 
+	bool queueFullWarningEmitted = false;
+
  protected:
 	WsQueue<QUEUE_SIZE>** queues;
 	static thread_local WsQueue<QUEUE_SIZE> queue;