Description
I think the recent changes cause this crash, and here is the stack trace:
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7ffff2492700 (LWP 23610)] 0x00007ffff7bb30a5 in ink_atomic_cas<__int128> (mem=0x7ffff3cae288, prev=0x00000000000000000000000000000001, next=0x000000000000000000007fffd4014501) at ink_atomic.h:153 153 return __sync_bool_compare_and_swap(mem, prev, next); (gdb) bt #0 0x00007ffff7bb30a5 in ink_atomic_cas<__int128> (mem=0x7ffff3cae288, prev=0x00000000000000000000000000000001, next=0x000000000000000000007fffd4014501) at ink_atomic.h:153 #1 0x00007ffff7bb2e29 in ink_atomiclist_push (l=0x7ffff3cae288, item=0x7fffd4014500) at ink_queue.cc:481 #2 0x00000000006d8961 in AtomicSLL<UnixNetVConnection, UnixNetVConnection::Link_read_enable_link>::push (this=0x7ffff3cae288, c=0x7fffd4014500) at ../../lib/ts/List.h:477 #3 0x00000000006d6767 in UnixNetVConnection::reenable (this=0x7fffd4014500, vio=0x7fffd4014610) at UnixNetVConnection.cc:721 #4 0x00000000005195d5 in VIO::reenable (this=0x7fffd4014610) at ../iocore/eventsystem/P_VIO.h:124 #5 0x00000000005c73b1 in HttpTunnel::consumer_handler (this=0x7fffdbefb888, event=101, c=0x7fffdbefb8c8) at HttpTunnel.cc:1237 #6 0x00000000005c7c1f in HttpTunnel::main_handler (this=0x7fffdbefb888, event=101, data=0x7fffc4008870) at HttpTunnel.cc:1481 #7 0x00000000004f8aa6 in Continuation::handleEvent (this=0x7fffdbefb888, event=101, data=0x7fffc4008870) at ../iocore/eventsystem/I_Continuation.h:146 #8 0x000000000050a612 in TSContCall (contp=0x7fffdbefb888, event=TS_EVENT_VCONN_WRITE_READY, edata=0x7fffc4008870) at InkAPI.cc:4400 #9 0x000000000055f302 in handle_transform (contp=0x7fffc40087c0) at InkAPITest.cc:6435 #10 0x000000000055f4be in transformtest_transform (contp=0x7fffc40087c0, event=TS_EVENT_IMMEDIATE, edata=0x1166920) at InkAPITest.cc:6501 #11 0x0000000000501922 in INKVConnInternal::handle_event (this=0x7fffc40087c0, event=1, edata=0x1166920) at InkAPI.cc:1045 #12 0x00000000004f8aa6 in Continuation::handleEvent (this=0x7fffc40087c0, event=1, data=0x1166920) at ../iocore/eventsystem/I_Continuation.h:146 #13 0x00000000006f823d in EThread::process_event (this=0x7ffff3aa9010, e=0x1166920, calling_code=1) at UnixEThread.cc:142 #14 0x00000000006f8491 in EThread::execute (this=0x7ffff3aa9010) at UnixEThread.cc:193 #15 0x00000000006f744c in spawn_thread_internal (a=0x1090810) at Thread.cc:88 #16 0x00007ffff793dea7 in start_thread () from /lib64/libpthread.so.0 #17 0x00007ffff51c114d in clone () from /lib64/libc.so.6 (gdb) l 148 // ink_atomic_cas(mem, prev, next) 149 // Atomically store the value @next into the pointer @mem, but only if the current value at @mem is @prev. 150 // Returns true if @next was successfully stored. 151 template <typename T> static inline bool 152 ink_atomic_cas(volatile T * mem, T prev, T next) { 153 return __sync_bool_compare_and_swap(mem, prev, next); 154 } 155 156 // ink_atomic_increment(ptr, count) 157 // Increment @ptr by @count, returning the previous value. (gdb) f 1 #1 0x00007ffff7bb2e29 in ink_atomiclist_push (l=0x7ffff3cae288, item=0x7fffd4014500) at ink_queue.cc:481 481 result = ink_atomic_cas((__int128_t*) & l->head, head.data, item_pair.data); (gdb) p head.data $1 = 0x00000000000000000000000000000001 (gdb) p head $2 = {s = {pointer = 0x1, version = 0}, data = 0x00000000000000000000000000000001} (gdb)