sxia-aviatrix commented on code in PR #13574:
URL: https://github.com/apache/trafficserver/pull/13574#discussion_r3833534929
##########
src/proxy/http/HttpSM.cc:
##########
@@ -2145,6 +2145,17 @@ HttpSM::state_read_server_response_header(int event,
void *data)
// If there is a post body in transit, give up on it
if (tunnel.is_tunnel_alive()) {
tunnel.abort_tunnel();
+ // abort_tunnel() does not clean up vc_table entries. If a request
+ // transform is present, post_transform_info.entry still points at the
+ // TransformVConnection whose chain will be freed by the abort cascade.
+ // Clean it up now so cleanup_all() in kill_this() does not call
+ // do_io_close() on freed memory.
Review Comment:
I do have gdb stack trace and hope this can be helpful:
```
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by
`/tmp/sb_pr4/post_early_response_transform/ts/bin/traffic_server --bind_stderr
/'.
Program terminated with signal SIGABRT, Aborted.
#0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized
out>) at ./nptl/pthread_kill.c:44
warning: 44 ./nptl/pthread_kill.c: No such file or directory
[Current thread is 1 (Thread 0x7f4ef591e6c0 (LWP 287043))]
#0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized
out>) at ./nptl/pthread_kill.c:44
#1 __pthread_kill_internal (signo=6, threadid=<optimized out>) at
./nptl/pthread_kill.c:78
#2 __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at
./nptl/pthread_kill.c:89
#3 0x00007f4f014a927e in __GI_raise (sig=sig@entry=6) at
../sysdeps/posix/raise.c:26
#4 0x00007f4f0148c8ff in __GI_abort () at ./stdlib/abort.c:79
#5 0x0000632477666236 in ink_abort
(message_format=message_format@entry=0x6324787af000 "%s:%d: failed assertion
`%s`") at /src/trafficserver_pr/trafficserver/src/tscore/ink_error.cc:99
#6 0x000063247765f9b6 in _ink_assert
(expression=expression@entry=0x6324787d9200 "post_transform_info.entry ==
nullptr", file=file@entry=0x6324787d3480
"/src/trafficserver_pr/trafficserver/src/proxy/http/HttpSM.cc",
line=line@entry=2158) at
/src/trafficserver_pr/trafficserver/src/tscore/ink_assert.cc:35
#7 0x00006324777cd115 in HttpSM::state_read_server_response_header
(this=0x7f4ee73b8000, event=<optimized out>, data=<optimized out>) at
/src/trafficserver_pr/trafficserver/src/proxy/http/HttpSM.cc:2158
#8 0x00006324777deec7 in HttpSM::main_handler (this=0x7f4ee73b8000,
event=<optimized out>, data=<optimized out>) at
/src/trafficserver_pr/trafficserver/src/proxy/http/HttpSM.cc:2880
#9 0x000063247823737a in Continuation::handleEvent (data=0x7f4ee749b5c8,
event=100, this=0x7f4ee73b8000) at
/src/trafficserver_pr/trafficserver/include/iocore/eventsystem/Continuation.h:228
#10 Continuation::handleEvent (data=0x7f4ee749b5c8, event=100,
this=0x7f4ee73b8000) at
/src/trafficserver_pr/trafficserver/include/iocore/eventsystem/Continuation.h:224
#11 read_signal_and_update (event=100, vc=0x7f4ee749b1b0) at
/src/trafficserver_pr/trafficserver/src/iocore/net/UnixNetVConnection.cc:86
#12 0x00006324782488b8 in UnixNetVConnection::net_read_io
(this=0x7f4ee749b1b0, nh=<optimized out>) at
/src/trafficserver_pr/trafficserver/src/iocore/net/UnixNetVConnection.cc:600
#13 0x00006324782f51c4 in NetHandler::process_ready_list
(this=this@entry=0x7f4efa3a43a0) at
/src/trafficserver_pr/trafficserver/src/iocore/net/NetHandler.cc:265
#14 0x00006324782f5da6 in NetHandler::waitForActivity (this=0x7f4efa3a43a0,
timeout=<optimized out>) at
/src/trafficserver_pr/trafficserver/src/iocore/net/NetHandler.cc:360
#15 0x0000632478443b90 in EThread::execute_regular
(this=this@entry=0x7f4efa3a3800) at
/src/trafficserver_pr/trafficserver/src/iocore/eventsystem/UnixEThread.cc:326
#16 0x0000632478444552 in EThread::execute (this=0x7f4efa3a3800) at
/src/trafficserver_pr/trafficserver/src/iocore/eventsystem/UnixEThread.cc:383
#17 EThread::execute (this=0x7f4efa3a3800) at
/src/trafficserver_pr/trafficserver/src/iocore/eventsystem/UnixEThread.cc:360
#18 0x000063247843876e in spawn_thread_internal (a=a@entry=0x50600000faa0)
at /src/trafficserver_pr/trafficserver/src/iocore/eventsystem/Thread.cc:75
#19 0x00007f4f027b1a42 in asan_thread_start (arg=0x7f4f0074f000) at
../../../../src/libsanitizer/asan/asan_interceptors.cpp:234
#20 0x00007f4f01500aa4 in start_thread (arg=<optimized out>) at
./nptl/pthread_create.c:447
#21 0x00007f4f0158dc6c in clone3 () at
../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
#7 0x00006324777cd115 in HttpSM::state_read_server_response_header
(this=0x7f4ee73b8000, event=<optimized out>, data=<optimized out>) at
/src/trafficserver_pr/trafficserver/src/proxy/http/HttpSM.cc:2158
2158 ink_release_assert(post_transform_info.entry == nullptr);
$1 = {entry = 0x7f4ee73ba950, vc = 0x5130000202c0}
$2 = {vc = 0x5130000202c0, read_buffer = 0x0, write_buffer = 0x0, read_vio =
0x0, write_vio = 0x0, vc_read_handler = NULL, vc_write_handler = NULL, vc_type
= HttpVC_t::TRANSFORM_VC, sm = 0x7f4ee73b8000, eos = false, in_tunnel = true}
[ats-develop@b07c50b9e0d7 trafficserver ]$
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]