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_);