-
Notifications
You must be signed in to change notification settings - Fork 849
Closed
Description
We've been seeing crashes on 9.2.x.
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x0000564a7fd24e3a in handleEvent (this=<optimized out>, event=105, data=0x7f588a566ee0)
at /path/to/ats/iocore/eventsystem/I_Continuation.h:219
#2 read_signal_and_update(int, UnixNetVConnection*) (event=105, vc=0x7f588a566cf0) at UnixNetVConnection.cc:83
#3 0x0000564a7fd25912 in UnixNetVConnection::mainEvent(int, Event*) (this=0x7f588a566cf0, event=<optimized out>, e=<optimized out>)
at UnixNetVConnection.cc:1116
#4 0x0000564a7fd14dc0 in InactivityCop::check_inactivity(int, Event*) (this=0x7f992e0d0000, event=<optimized out>, e=0x7f9936b6efc0) at UnixNet.cc:96
#5 0x0000564a7fd4718b in handleEvent (this=<optimized out>, event=2, data=0x7f9936b6efc0) at ./I_Continuation.h:219
#6 EThread::process_event(Event*, int) (this=0x7f993580dc80, e=0x7f9936b6efc0, calling_code=2) at UnixEThread.cc:164
#7 0x0000564a7fd47bdd in EThread::execute_regular() (this=0x7f993580dc80) at UnixEThread.cc:273
#8 0x0000564a7fd48049 in EThread::execute() (this=0x7f993580dc80) at UnixEThread.cc:364
#9 0x0000564a7fd463d6 in spawn_thread_internal(void*) (a=0x7f99380506d0) at Thread.cc:91
I looked int the core file and found that handler is nullptr in handleEvent().
trafficserver/iocore/eventsystem/I_Continuation.h
Lines 214 to 220 in b1df63a
| TS_INLINE int | |
| handleEvent(int event = CONTINUATION_EVENT_NONE, void *data = nullptr) | |
| { | |
| // If there is a lock, we must be holding it on entry | |
| ink_release_assert(!mutex || mutex->thread_holding == this_ethread()); | |
| return (this->*handler)(event, data); | |
| } |
The continuation (this in the code above) seems to be Http1ClientTransaction, and it doesn't make sense to me because Http1ClientTransaction doesn't have code for event handling.
I'm not 100% sure yet, but I suspect #7956 that passes Http1ClientTransaction to do_io_read is causing the crashes.