Add a QUIC_BUG to detect double free of QuicStreamSequencer objects.
This is similar to the destruction_indicator removed in cl/204339592. It seems the memory bug around QuicStreamSequencerBuffer::~QuicStreamSequencerBuffer is still occurring in the wild.
PiperOrigin-RevId: 345094362
Change-Id: I69dec06bf863bfaee29f2a56648d560e9ea6b258
diff --git a/quic/core/quic_stream_sequencer.cc b/quic/core/quic_stream_sequencer.cc
index 7d1c237..8f61264 100644
--- a/quic/core/quic_stream_sequencer.cc
+++ b/quic/core/quic_stream_sequencer.cc
@@ -22,6 +22,7 @@
#include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_stack_trace.h"
#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
namespace quic {
@@ -37,7 +38,13 @@
ignore_read_data_(false),
level_triggered_(false) {}
-QuicStreamSequencer::~QuicStreamSequencer() {}
+QuicStreamSequencer::~QuicStreamSequencer() {
+ if (stream_ == nullptr) {
+ QUIC_BUG << "Double free'ing QuicStreamSequencer at " << this << ". "
+ << QuicStackTrace();
+ }
+ stream_ = nullptr;
+}
void QuicStreamSequencer::OnStreamFrame(const QuicStreamFrame& frame) {
DCHECK_LE(frame.offset + frame.data_length, close_offset_);