Avoid crash in QuicDispatcher

Before this CL, when the dispatcher's call to CreateQuicSession returned nullptr, we would crash. This CL changes that to instead log a QUIC_BUG and return. This makes debugging QuicDispatcher tests a lot easier because they now log a test failure instead of crashing and disabling test results.

No behavior change, crash not ever seen in production now logs a  gfe_bug instead

PiperOrigin-RevId: 317697386
Change-Id: I21245840870495ac0b4b7b3cef27f10e27ba7cd3
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc
index ca3f50d..b261690 100644
--- a/quic/core/quic_dispatcher.cc
+++ b/quic/core/quic_dispatcher.cc
@@ -985,7 +985,13 @@
   std::unique_ptr<QuicSession> session =
       CreateQuicSession(packet_info->destination_connection_id,
                         packet_info->peer_address, alpn, packet_info->version);
-  DCHECK(session);
+  if (QUIC_PREDICT_FALSE(session == nullptr)) {
+    QUIC_BUG << "CreateQuicSession returned nullptr for "
+             << packet_info->destination_connection_id << " from "
+             << packet_info->peer_address << " ALPN \"" << alpn << "\" version "
+             << packet_info->version;
+    return;
+  }
   if (original_connection_id != packet_info->destination_connection_id) {
     session->connection()->SetOriginalDestinationConnectionId(
         original_connection_id);