diff --git a/quic/core/batch_writer/quic_gso_batch_writer.h b/quic/core/batch_writer/quic_gso_batch_writer.h
index 75683d1..3e544f6 100644
--- a/quic/core/batch_writer/quic_gso_batch_writer.h
+++ b/quic/core/batch_writer/quic_gso_batch_writer.h
@@ -100,7 +100,7 @@
 
     batch_buffer().PopBufferedWrite(buffered_writes().size());
 
-    QUIC_BUG_IF(!buffered_writes().empty())
+    QUIC_BUG_IF_V2(quic_bug_12544_1, !buffered_writes().empty())
         << "All packets should have been written on a successful return";
     return result;
   }
diff --git a/quic/core/batch_writer/quic_sendmmsg_batch_writer.cc b/quic/core/batch_writer/quic_sendmmsg_batch_writer.cc
index 1181d9b..ac68db0 100644
--- a/quic/core/batch_writer/quic_sendmmsg_batch_writer.cc
+++ b/quic/core/batch_writer/quic_sendmmsg_batch_writer.cc
@@ -75,7 +75,7 @@
     return result;
   }
 
-  QUIC_BUG_IF(!buffered_writes().empty())
+  QUIC_BUG_IF_V2(quic_bug_12537_1, !buffered_writes().empty())
       << "All packets should have been written on a successful return";
   write_result.bytes_written = result.bytes_written;
   return result;
diff --git a/quic/core/frames/quic_ack_frame.cc b/quic/core/frames/quic_ack_frame.cc
index 7c112c2..1e919fe 100644
--- a/quic/core/frames/quic_ack_frame.cc
+++ b/quic/core/frames/quic_ack_frame.cc
@@ -96,7 +96,7 @@
 
 void PacketNumberQueue::RemoveSmallestInterval() {
   // TODO(wub): Move this QUIC_BUG to upper level.
-  QUIC_BUG_IF(packet_number_intervals_.Size() < 2)
+  QUIC_BUG_IF_V2(quic_bug_12614_1, packet_number_intervals_.Size() < 2)
       << (Empty() ? "No intervals to remove."
                   : "Can't remove the last interval.");
   packet_number_intervals_.PopFront();
@@ -171,7 +171,7 @@
         (interval.max() - interval.min() > kMaxPrintRange)) {
       // If min>max, it's really a bug, so QUIC_BUG it to
       // catch it in development.
-      QUIC_BUG_IF(interval.min() >= interval.max())
+      QUIC_BUG_IF_V2(quic_bug_12614_2, interval.min() >= interval.max())
           << "Ack Range minimum (" << interval.min() << "Not less than max ("
           << interval.max() << ")";
       // print range as min...max rather than full list.
diff --git a/quic/core/frames/quic_frame.cc b/quic/core/frames/quic_frame.cc
index 1311a6d..f55c060 100644
--- a/quic/core/frames/quic_frame.cc
+++ b/quic/core/frames/quic_frame.cc
@@ -267,7 +267,7 @@
       frame->new_token_frame->control_frame_id = control_frame_id;
       return;
     default:
-      QUIC_BUG
+      QUIC_BUG_V2(quic_bug_12594_1)
           << "Try to set control frame id of a frame without control frame id";
   }
 }
diff --git a/quic/masque/masque_dispatcher.cc b/quic/masque/masque_dispatcher.cc
index 03eb8f8..5e7a626 100644
--- a/quic/masque/masque_dispatcher.cc
+++ b/quic/masque/masque_dispatcher.cc
@@ -74,10 +74,12 @@
 
   // Make sure we don't try to overwrite an existing registration with a
   // different session.
-  QUIC_BUG_IF(client_connection_id_registrations_.find(client_connection_id) !=
-                  client_connection_id_registrations_.end() &&
-              client_connection_id_registrations_[client_connection_id] !=
-                  masque_server_session)
+  QUIC_BUG_IF_V2(
+      quic_bug_12013_1,
+      client_connection_id_registrations_.find(client_connection_id) !=
+              client_connection_id_registrations_.end() &&
+          client_connection_id_registrations_[client_connection_id] !=
+              masque_server_session)
       << "Overwriting existing registration for " << client_connection_id;
   client_connection_id_registrations_[client_connection_id] =
       masque_server_session;
diff --git a/quic/masque/masque_server_backend.cc b/quic/masque/masque_server_backend.cc
index 403ddf2..a5a8963 100644
--- a/quic/masque/masque_server_backend.cc
+++ b/quic/masque/masque_server_backend.cc
@@ -120,8 +120,8 @@
 void MasqueServerBackend::RegisterBackendClient(QuicConnectionId connection_id,
                                                 BackendClient* backend_client) {
   QUIC_DLOG(INFO) << "Registering backend client for " << connection_id;
-  QUIC_BUG_IF(backend_client_states_.find(connection_id) !=
-              backend_client_states_.end())
+  QUIC_BUG_IF_V2(quic_bug_12005_1, backend_client_states_.find(connection_id) !=
+                                       backend_client_states_.end())
       << connection_id << " already in backend clients map";
   backend_client_states_[connection_id] =
       BackendClientState{backend_client, {}};
