diff --git a/core/chain_manager.go b/core/chain_manager.go
index 55ef3fcadb149ea53ae164ceb59e061170ccc592..49f831a59b8c95111f2af28040b7b30bfe587eea 100644
--- a/core/chain_manager.go
+++ b/core/chain_manager.go
@@ -804,7 +804,9 @@ func (self *ChainManager) reorg(oldBlock, newBlock *types.Block) error {
 		DeleteReceipt(self.chainDb, tx.Hash())
 		DeleteTransaction(self.chainDb, tx.Hash())
 	}
-	self.eventMux.Post(RemovedTransactionEvent{diff})
+	// Must be posted in a goroutine because of the transaction pool trying
+	// to acquire the chain manager lock
+	go self.eventMux.Post(RemovedTransactionEvent{diff})
 
 	return nil
 }