Fix QUIC_BUG in FlushAckFrame to check whether frames is empty.

Protected by FLAGS_quic_reloadable_flag_quic_single_ack_in_packet2.

PiperOrigin-RevId: 349583801
Change-Id: I75958100168a1c77c8661d217224f6584fac284c
diff --git a/quic/core/quic_packet_creator.cc b/quic/core/quic_packet_creator.cc
index 0ebfc30..7dbe37a 100644
--- a/quic/core/quic_packet_creator.cc
+++ b/quic/core/quic_packet_creator.cc
@@ -1423,7 +1423,10 @@
 bool QuicPacketCreator::FlushAckFrame(const QuicFrames& frames) {
   QUIC_BUG_IF(!flusher_attached_) << "Packet flusher is not attached when "
                                      "generator tries to send ACK frame.";
-  QUIC_BUG_IF(GetQuicReloadableFlag(quic_single_ack_in_packet) && has_ack())
+  // MaybeBundleAckOpportunistically could be called nestedly when sending a
+  // control frame causing another control frame to be sent.
+  QUIC_BUG_IF(GetQuicReloadableFlag(quic_single_ack_in_packet2) &&
+              !frames.empty() && has_ack())
       << "Trying to flush " << frames << " when there is ACK queued";
   for (const auto& frame : frames) {
     DCHECK(frame.type == ACK_FRAME || frame.type == STOP_WAITING_FRAME);