diff --git a/interpreter/cling/lib/Interpreter/TransactionPool.h b/interpreter/cling/lib/Interpreter/TransactionPool.h
index d2cb4d7489d3e476bba7b728073279f507d7df92..5c3f0ade2f86e43296c414740455ef776a1c4f0c 100644
--- a/interpreter/cling/lib/Interpreter/TransactionPool.h
+++ b/interpreter/cling/lib/Interpreter/TransactionPool.h
@@ -58,6 +58,8 @@ namespace cling {
     // Transaction T must be from call to TransactionPool::takeTransaction
     //
     void releaseTransaction(Transaction* T, bool reuse = true) {
+      assert((m_Transactions.empty() || m_Transactions.back() != T) \
+             && "Transaction already in pool");
       if (reuse) {
         assert((T->getState() == Transaction::kCompleted ||
                 T->getState() == Transaction::kRolledBack)