Add a QUIC_BUG in QuicReceivedPacketManager::GetUpdatedAckFrame to detect dead loops.

PiperOrigin-RevId: 542325216
diff --git a/quiche/quic/core/quic_received_packet_manager.cc b/quiche/quic/core/quic_received_packet_manager.cc
index faa27e6..6b566f4 100644
--- a/quiche/quic/core/quic_received_packet_manager.cc
+++ b/quiche/quic/core/quic_received_packet_manager.cc
@@ -174,8 +174,18 @@
                                     ? QuicTime::Delta::Zero()
                                     : approximate_now - time_largest_observed_;
   }
+
+  const size_t initial_ack_ranges = ack_frame_.packets.NumIntervals();
+  uint64_t num_iterations = 0;
   while (max_ack_ranges_ > 0 &&
          ack_frame_.packets.NumIntervals() > max_ack_ranges_) {
+    num_iterations++;
+    QUIC_BUG_IF(quic_rpm_too_many_ack_ranges, (num_iterations % 100000) == 0)
+        << "Too many ack ranges to remove, possibly a dead loop. "
+           "initial_ack_ranges:"
+        << initial_ack_ranges << " max_ack_ranges:" << max_ack_ranges_
+        << ", current_ack_ranges:" << ack_frame_.packets.NumIntervals()
+        << " num_iterations:" << num_iterations;
     ack_frame_.packets.RemoveSmallestInterval();
   }
   // Clear all packet times if any are too far from largest observed.