Ensure some QuicAlarms are properly cancelled to prevent use-after-free issues when alarm fires.
Also added error messages in QuicAlarm to detect similar issues in production.
Protected by FLAGS_quic_restart_flag_quic_alarm_add_permanent_cancel.
PiperOrigin-RevId: 388316558
diff --git a/quic/test_tools/packet_dropping_test_writer.cc b/quic/test_tools/packet_dropping_test_writer.cc
index 35cc978..76dd778 100644
--- a/quic/test_tools/packet_dropping_test_writer.cc
+++ b/quic/test_tools/packet_dropping_test_writer.cc
@@ -68,7 +68,14 @@
simple_random_.set_seed(seed);
}
-PacketDroppingTestWriter::~PacketDroppingTestWriter() = default;
+PacketDroppingTestWriter::~PacketDroppingTestWriter() {
+ if (write_unblocked_alarm_ != nullptr) {
+ write_unblocked_alarm_->PermanentCancel();
+ }
+ if (delay_alarm_ != nullptr) {
+ delay_alarm_->PermanentCancel();
+ }
+}
void PacketDroppingTestWriter::Initialize(
QuicConnectionHelperInterface* helper,