[ 
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)

Reply via email to