#42936 [BC-Critical] Potential Deadlock or Panic Due to Concurrent Lock Acquisition in `TransactionPipe`
Description
Bug Description
pub(crate) async fn receive_transaction_tick(&mut self) -> Result<(), Error> {
// ...
if self.last_gc.elapsed() >= GC_INTERVAL {
let now = Instant::now();
let epoch_ms_now = chrono::Utc::now().timestamp_millis() as u64;
// ...
{
let mut transactions_in_flight = self.transactions_in_flight.write().unwrap(); //@audit-issue this will panic when call again after holding the lock.
transactions_in_flight.gc(epoch_ms_now);
}
// ...
self.last_gc = now;
}Impact
References
Recommendation
Proof of Concept
Proof of Concept
Previous#42934 [BC-High] Improper input validation in KeylessSignature causes full-node panicNext#42937 [BC-Insight] Public Exposure of Validator Signer Private Key in Executor Struct
Was this helpful?