-
Notifications
You must be signed in to change notification settings - Fork 844
Closed
Description
We got this crash on 8.0.x. This looks pretty similar to #4158. So #4158 (adding null check) could be workaround fix. But it looks like there is a race on shutdown which we should fix.
[ 0 ] libc-2.12.so __libc_waitpid ( :undefined )
[ 1 ] traffic_server crash_logger_invoke ( Crash.cc:165 )
[ 2 ] libc-2.12.so 0x2b0b38dfd570 ( :undefined )
[ 3 ] traffic_server Http2ConnectionState::release_stream(Http2Stream*) ( Http2ConnectionState.cc:1261 )
[ 4 ] traffic_server Http2Stream::destroy() ( Http2Stream.cc:730 )
[ 5 ] traffic_server Http2Stream::terminate_if_possible() ( Http2Stream.cc:380 )
[ 6 ] traffic_server Http2Stream::main_event_handler(int, void*) ( Http2Stream.cc:131 )
[ 7 ] traffic_server handleEvent ( I_Continuation.h:160 )
[ 8 ] traffic_server EThread::process_event(Event*, int) ( UnixEThread.cc:131 )
[ 9 ] traffic_server EThread::process_queue(Queue<Event, Event::Link_link>*, i... ( UnixEThread.cc:170 )
[ 10 ] traffic_server EThread::execute_regular() ( UnixEThread.cc:230 )
[ 11 ] traffic_server spawn_thread_internal ( Thread.cc:85 )
[ 12 ] libpthread-2.12.so start_thread ( :undefined )
trafficserver/proxy/http2/Http2ConnectionState.cc
Lines 1257 to 1265 in 8c50c75
| if (fini_received) { | |
| // We were shutting down, go ahead and terminate the session | |
| // this is a member of Http2ConnectionState and will be freed | |
| // when ua_session is destroyed | |
| ua_session->destroy(); | |
| // Can't do this because we just destroyed right here ^, | |
| // or we can use a local variable to do it. | |
| // ua_session = nullptr; |