Fix a memory destruction ordering issue in Quic test code QuicServer relies on an unowned pointer to a QuicSimpleServerBackend. Fix some tests constructing/destructing them in the wrong order. PiperOrigin-RevId: 467307068
diff --git a/quiche/quic/tools/quic_server_test.cc b/quiche/quic/tools/quic_server_test.cc index 444d023..fe68ba5 100644 --- a/quiche/quic/tools/quic_server_test.cc +++ b/quiche/quic/tools/quic_server_test.cc
@@ -55,9 +55,11 @@ class TestQuicServer : public QuicServer { public: - explicit TestQuicServer(QuicEventLoopFactory* event_loop_factory) + explicit TestQuicServer(QuicEventLoopFactory* event_loop_factory, + QuicMemoryCacheBackend* quic_simple_server_backend) : QuicServer(crypto_test_utils::ProofSourceForTesting(), - &quic_simple_server_backend_), + quic_simple_server_backend), + quic_simple_server_backend_(quic_simple_server_backend), event_loop_factory_(event_loop_factory) {} ~TestQuicServer() override = default; @@ -71,7 +73,7 @@ std::make_unique<QuicDefaultConnectionHelper>(), std::unique_ptr<QuicCryptoServerStreamBase::Helper>( new QuicSimpleCryptoServerStreamHelper()), - event_loop()->CreateAlarmFactory(), &quic_simple_server_backend_); + event_loop()->CreateAlarmFactory(), quic_simple_server_backend_); return mock_dispatcher_; } @@ -80,14 +82,15 @@ } MockQuicSimpleDispatcher* mock_dispatcher_ = nullptr; - QuicMemoryCacheBackend quic_simple_server_backend_; + QuicMemoryCacheBackend* quic_simple_server_backend_; QuicEventLoopFactory* event_loop_factory_; }; class QuicServerEpollInTest : public QuicTestWithParam<QuicEventLoopFactory*> { public: QuicServerEpollInTest() - : server_address_(TestLoopback(), 0), server_(GetParam()) {} + : server_address_(TestLoopback(), 0), + server_(GetParam(), &quic_simple_server_backend_) {} void StartListening() { server_.CreateUDPSocketAndListen(server_address_); @@ -103,6 +106,7 @@ protected: QuicSocketAddress server_address_; + QuicMemoryCacheBackend quic_simple_server_backend_; TestQuicServer server_; };