[
https://issues.apache.org/jira/browse/TS-3863?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15001378#comment-15001378
]
Bryan Call commented on TS-3863:
--------------------------------
I am not seeing ATS core anymore when using exit() instead of _exit(). I am
running on Fedora 23:
Patch:
{code}
diff --git a/proxy/Main.cc b/proxy/Main.cc
index 0859603..1369a06 100644
--- a/proxy/Main.cc
+++ b/proxy/Main.cc
@@ -391,7 +391,7 @@ proxy_signal_handler(int signo, siginfo_t *info, void *)
return;
}
- _exit(signo);
+ exit(signo);
}
//
{code}
Without asan compiled:
{code}
[bcall@homer trafficserver]$ sudo /usr/local/bin/traffic_server
traffic_server: using root directory '/usr/local'
^Ctraffic_server: Interrupt (Signal sent by the kernel 0 0)
[bcall@homer trafficserver]$ date
Wed Nov 11 16:09:16 PST 2015
[bcall@homer trafficserver]$ coredumpctl
TIME PID UID GID SIG PRESENT EXE
Tue 2015-11-10 17:56:07 PST 17907 0 0 11 * /usr/bin/perl
Tue 2015-11-10 17:56:08 PST 17909 0 0 11 * /usr/bin/perl
Wed 2015-11-11 09:54:01 PST 10365 99 99 6
/usr/local/bin/traffic_server
Wed 2015-11-11 09:57:38 PST 10762 99 99 6
/usr/local/bin/traffic_server
Wed 2015-11-11 10:06:02 PST 14270 99 99 6
/usr/local/bin/traffic_server
Wed 2015-11-11 10:07:37 PST 14377 99 99 6
/usr/local/bin/traffic_server
Wed 2015-11-11 10:08:28 PST 14475 99 99 6
/usr/local/bin/traffic_serve
{code}
I was having a problem with this before, so we are able to use the ASAN leak
detection now.
With asan compiled:
{code}
[bcall@homer trafficserver]$ sudo /usr/local/bin/traffic_server -f
traffic_server: using root directory '/usr/local'
^Ctraffic_server: Interrupt (Signal sent by the kernel 0 0)
=================================================================
==3791==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 294 byte(s) in 23 object(s) allocated from:
#0 0x7f658f5baa0a in malloc (/lib64/libasan.so.2+0x98a0a)
#1 0x7f658f2ebdf5 in ats_malloc
/home/bcall/dev/apache/trafficserver/lib/ts/ink_memory.cc:54
#2 0x7f658f2ec096 in _xstrdup
/home/bcall/dev/apache/trafficserver/lib/ts/ink_memory.cc:225
#3 0x8b57c1 in LogFieldAliasTable::init(unsigned long, ...)
/home/bcall/dev/apache/trafficserver/proxy/logging/LogFieldAliasMap.cc:78
#4 0x88b9e3 in Log::init_fields()
/home/bcall/dev/apache/trafficserver/proxy/logging/Log.cc:579
#5 0x88df1f in Log::init_when_enabled()
/home/bcall/dev/apache/trafficserver/proxy/logging/Log.cc:909
#6 0x88eb84 in Log::init(int)
/home/bcall/dev/apache/trafficserver/proxy/logging/Log.cc:898
#7 0x4943e5 in main /home/bcall/dev/apache/trafficserver/proxy/Main.cc:1798
#8 0x7f658c50c57f in __libc_start_main (/lib64/libc.so.6+0x2057f)
Direct leak of 29 byte(s) in 2 object(s) allocated from:
#0 0x7f658f5baa0a in malloc (/lib64/libasan.so.2+0x98a0a)
#1 0x7f658f2ebdf5 in ats_malloc
/home/bcall/dev/apache/trafficserver/lib/ts/ink_memory.cc:54
#2 0x7f658f2ec096 in _xstrdup
/home/bcall/dev/apache/trafficserver/lib/ts/ink_memory.cc:225
#3 0x8b57c1 in LogFieldAliasTable::init(unsigned long, ...)
/home/bcall/dev/apache/trafficserver/proxy/logging/LogFieldAliasMap.cc:78
#4 0x88d008 in Log::init_fields()
/home/bcall/dev/apache/trafficserver/proxy/logging/Log.cc:784
#5 0x88df1f in Log::init_when_enabled()
/home/bcall/dev/apache/trafficserver/proxy/logging/Log.cc:909
#6 0x88eb84 in Log::init(int)
/home/bcall/dev/apache/trafficserver/proxy/logging/Log.cc:898
#7 0x4943e5 in main /home/bcall/dev/apache/trafficserver/proxy/Main.cc:1798
#8 0x7f658c50c57f in __libc_start_main (/lib64/libc.so.6+0x2057f)
Direct leak of 23 byte(s) in 5 object(s) allocated from:
#0 0x7f658f5baa0a in malloc (/lib64/libasan.so.2+0x98a0a)
#1 0x7f658f2ebdf5 in ats_malloc
/home/bcall/dev/apache/trafficserver/lib/ts/ink_memory.cc:54
#2 0x7f658f2ec096 in _xstrdup
/home/bcall/dev/apache/trafficserver/lib/ts/ink_memory.cc:225
#3 0x8b57c1 in LogFieldAliasTable::init(unsigned long, ...)
/home/bcall/dev/apache/trafficserver/proxy/logging/LogFieldAliasMap.cc:78
#4 0x88cab3 in Log::init_fields()
/home/bcall/dev/apache/trafficserver/proxy/logging/Log.cc:746
#5 0x88df1f in Log::init_when_enabled()
/home/bcall/dev/apache/trafficserver/proxy/logging/Log.cc:909
#6 0x88eb84 in Log::init(int)
/home/bcall/dev/apache/trafficserver/proxy/logging/Log.cc:898
#7 0x4943e5 in main /home/bcall/dev/apache/trafficserver/proxy/Main.cc:1798
#8 0x7f658c50c57f in __libc_start_main (/lib64/libc.so.6+0x2057f)
Direct leak of 8 byte(s) in 1 object(s) allocated from:
#0 0x7f658f5bb912 in operator new(unsigned long)
(/lib64/libasan.so.2+0x99912)
#1 0xa08b33 in SplitDNSConfig::startup()
/home/bcall/dev/apache/trafficserver/iocore/dns/SplitDNS.cc:133
#2 0x494299 in main /home/bcall/dev/apache/trafficserver/proxy/Main.cc:1769
#3 0x7f658c50c57f in __libc_start_main (/lib64/libc.so.6+0x2057f)
Indirect leak of 1051936 byte(s) in 1 object(s) allocated from:
#0 0x7f658f5bb912 in operator new(unsigned long)
(/lib64/libasan.so.2+0x99912)
#1 0x4933a9 in main /home/bcall/dev/apache/trafficserver/proxy/Main.cc:1605
#2 0x7f658c50c57f in __libc_start_main (/lib64/libc.so.6+0x2057f)
Indirect leak of 80 byte(s) in 1 object(s) allocated from:
#0 0x7f658f5baf12 in memalign (/lib64/libasan.so.2+0x98f12)
#1 0x7f658f2ebec1 in ats_memalign
/home/bcall/dev/apache/trafficserver/lib/ts/ink_memory.cc:112
#2 0x7f658f2ecde2 in ink_freelist_new
/home/bcall/dev/apache/trafficserver/lib/ts/ink_queue.cc:181
#3 0xd177cb in ClassAllocator<ProxyMutex>::alloc()
../../lib/ts/Allocator.h:122
#4 0xd177cb in new_ProxyMutex()
/home/bcall/dev/apache/trafficserver/iocore/eventsystem/I_Lock.h:555
#5 0xd177cb in Thread::Thread()
/home/bcall/dev/apache/trafficserver/iocore/eventsystem/Thread.cc:46
#6 0xd1e2a0 in EThread::EThread()
/home/bcall/dev/apache/trafficserver/iocore/eventsystem/UnixEThread.cc:44
#7 0x4933b4 in main /home/bcall/dev/apache/trafficserver/proxy/Main.cc:1605
#8 0x7f658c50c57f in __libc_start_main (/lib64/libc.so.6+0x2057f)
Indirect leak of 80 byte(s) in 1 object(s) allocated from:
#0 0x7f658f5baf12 in memalign (/lib64/libasan.so.2+0x98f12)
#1 0x7f658f2ebec1 in ats_memalign
/home/bcall/dev/apache/trafficserver/lib/ts/ink_memory.cc:112
#2 0x7f658f2ecde2 in ink_freelist_new
/home/bcall/dev/apache/trafficserver/lib/ts/ink_queue.cc:181
#3 0xa08b50 in ClassAllocator<ProxyMutex>::alloc()
../../lib/ts/Allocator.h:122
#4 0xa08b50 in new_ProxyMutex() ../../iocore/eventsystem/I_Lock.h:555
#5 0xa08b50 in SplitDNSConfig::startup() ../../mgmt/ProxyConfig.h:117
#6 0x494299 in main /home/bcall/dev/apache/trafficserver/proxy/Main.cc:1769
#7 0x7f658c50c57f in __libc_start_main (/lib64/libc.so.6+0x2057f)
SUMMARY: AddressSanitizer: 1052450 byte(s) leaked in 34 allocation(s).
{code}
> Add support for ASAN leak detection
> -----------------------------------
>
> Key: TS-3863
> URL: https://issues.apache.org/jira/browse/TS-3863
> Project: Traffic Server
> Issue Type: Improvement
> Components: Core
> Reporter: Bryan Call
> Labels: yahoo
> Fix For: 6.1.0
>
>
> We will need to call exit() instead of _exit() and fix all the coredumps that
> happen when objects are being cleaned up.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)