[
https://issues.apache.org/jira/browse/TS-252?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12847030#action_12847030
]
John Plevyak commented on TS-252:
---------------------------------
Someone took it upon themselves to "clean up" a memory leak by adding a
destructor to
ShowCont in proxy/Show.h. I know because I wrote that code and I never use
destructors.
In this case the destructor is causing a double free because the buffer was
handed off
to HttpSM:
Here is a minimal patch which leaves the bogus deconstructor and just clears
the pointer
after the handoff:
+++ b/proxy/Show.h
@@ -79,6 +79,7 @@ struct ShowCont:Continuation
if (!action.cancelled) {
StatPageData data(start, buf - start);
action.continuation->handleEvent(STAT_PAGE_SUCCESS, &data);
+ start = 0;
} else {
xfree(start);
start = NULL;
> seg fault using cache inspector
> -------------------------------
>
> Key: TS-252
> URL: https://issues.apache.org/jira/browse/TS-252
> Project: Traffic Server
> Issue Type: Bug
> Affects Versions: 2.1.0
> Environment: OSX
> Reporter: Eric Balsa
>
> segfault using cache inspector in reverse proxy mode:
> enable cache inspector:
> CONFIG proxy.config.http_ui_enabled INT 1
> remap.config
> map / http://{cache}
> browse to http://localhost
> observe segfault:
> backtrace:
> (gdb) bt
> #0 0x00007fff88b4cfe6 in __kill ()
> #1 0x00007fff88bede32 in abort ()
> #2 0x00007fff88b05155 in free ()
> #3 0x0000000100011ef6 in xfree [inlined] () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/libinktomi++/ink_resource.h:89
> #4 0x0000000100011ef6 in IOBufferData::dealloc () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/iocore/eventsystem/P_IOBuffer.h:335
> #5 0x0000000100011ef6 in IOBufferData::free (this=0x106d53570) at
> ink_resource.h:346
> #6 0x0000000100011bac in IOBufferBlock::free (this=0x106d51b40) at Ptr.h:390
> #7 0x0000000100011b52 in IOBufferBlock::clear () at P_IOBuffer.h:443
> #8 0x0000000100011b52 in IOBufferBlock::dealloc () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/iocore/eventsystem/P_IOBuffer.h:472
> #9 0x0000000100011b52 in IOBufferBlock::free (this=0x106d51b80) at
> P_IOBuffer.h:478
> #10 0x00000001000030d6 in Ptr<IOBufferBlock>::operator= (this=0x106d6e648,
> p=<value temporarily unavailable, due to optimizations>) at Ptr.h:390
> #11 0x000000010011b3d9 in IOBufferReader::clear () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/iocore/eventsystem/P_IOBuffer.h:690
> #12 0x000000010011b3d9 in MIOBuffer::dealloc_reader () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/iocore/eventsystem/P_IOBuffer.h:1127
> #13 0x000000010011b3d9 in MIOBuffer::dealloc_all_readers () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/iocore/eventsystem/P_IOBuffer.h:1147
> #14 0x000000010011b3d9 in free_MIOBuffer [inlined] () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/iocore/eventsystem/P_IOBuffer.h:783
> #15 0x000000010011b3d9 in HttpTunnel::deallocate_buffers (this=0x10821ef08)
> at P_IOBuffer.h:544
> #16 0x00000001000db36a in HttpSM::kill_this (this=0x10821d570) at
> HttpSM.cc:6794
> #17 0x00000001000dbb7b in HttpSM::main_handler (this=0x10821d570, event=2301,
> data=0x10821ef08) at HttpSM.cc:2698
> #18 0x000000010011ce9f in Continuation::handleEvent () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/iocore/eventsystem/I_Continuation.h:1496
> #19 0x000000010011ce9f in HttpTunnel::main_handler (this=0x10821ef08,
> event=<value temporarily unavailable, due to optimizations>, data=<value
> temporarily unavailable, due to optimizations>) at HttpTunnel.cc:1496
> #20 0x000000010026d9f2 in write_signal_and_update [inlined] () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc:159
> #21 0x000000010026d9f2 in write_signal_done [inlined] () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/iocore/net/UnixNetVConnection.cc:186
> #22 0x000000010026d9f2 in write_to_net_io (nh=0x100e85098, vc=0x10201e9b0,
> thread=<value temporarily unavailable, due to optimizations>) at
> UnixNetVConnection.cc:501
> #23 0x00000001002616ab in NetHandler::mainNetEvent (this=0x100e85098,
> event=<value temporarily unavailable, due to optimizations>, e=<value
> temporarily unavailable, due to optimizations>) at UnixNet.cc:482
> #24 0x00000001002860a1 in MutexTryLock::release () at
> /Users/ericb/Documents/trafficserver/traffic/trunk/iocore/eventsystem/I_Lock.h:132
> #25 0x00000001002860a1 in EThread::process_event (this=0x100e84000,
> e=0x1011127c0, calling_code=5) at UnixEThread.cc:135
> #26 0x00000001002868e9 in EThread::execute (this=0x100e84000) at
> UnixEThread.cc:254
> #27 0x0000000100068f68 in main (argc=<value temporarily unavailable, due to
> optimizations>, argv=<value temporarily unavailable, due to optimizations>)
> at Main.cc:2134
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.