[ https://issues.apache.org/jira/browse/TS-4915?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15558199#comment-15558199 ]
Bryan Call commented on TS-4915: -------------------------------- {noformat} ================================================================= ==8079==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6060002792a0 at pc 0x000000655099 bp 0x2b95e2972550 sp 0x2b95e2972548 WRITE of size 8 at 0x6060002792a0 thread T31 ([ET_NET 29]) #0 0x655098 in PriorityQueue<RefCountCacheHashEntry*, PriorityQueueLess<RefCountCacheHashEntry*> >::erase(PriorityQueueEntry<RefCountCacheHashEntry*>*) ../../../trafficserver/lib/ts/PriorityQueue.h:126 #1 0x654965 in RefCountCachePartition<HostDBInfo>::erase(unsigned long, long) ../../../trafficserver/iocore/hostdb/P_RefCountCache.h:246 #2 0x9772d2 in RefCountCachePartition<HostDBInfo>::put(unsigned long, HostDBInfo*, int, int) ../../../trafficserver/iocore/hostdb/P_RefCountCache.h:192 #3 0x975b31 in RefCountCache<HostDBInfo>::put(unsigned long, HostDBInfo*, int, long) ../../../trafficserver/iocore/hostdb/P_RefCountCache.h:462 #4 0x964ef6 in HostDBContinuation::dnsEvent(int, HostEnt*) ../../../trafficserver/iocore/hostdb/HostDB.cc:1422 #5 0x5ef3c4 in Continuation::handleEvent(int, void*) ../../../trafficserver/iocore/eventsystem/I_Continuation.h:153 #6 0x98d024 in DNSEntry::postEvent(int, Event*) ../../../trafficserver/iocore/dns/DNS.cc:1269 #7 0x5ef3c4 in Continuation::handleEvent(int, void*) ../../../trafficserver/iocore/eventsystem/I_Continuation.h:153 #8 0xb30fb8 in EThread::process_event(Event*, int) ../../../trafficserver/iocore/eventsystem/UnixEThread.cc:146 #9 0xb314f4 in EThread::execute() ../../../trafficserver/iocore/eventsystem/UnixEThread.cc:200 #10 0xb2f963 in spawn_thread_internal ../../../trafficserver/iocore/eventsystem/Thread.cc:84 #11 0x2b95d7633aa0 in start_thread (/lib64/libpthread.so.0+0x3b88c07aa0) #12 0x3b880e893c in clone (/lib64/libc.so.6+0x3b880e893c) 0x6060002792a0 is located 0 bytes to the right of 64-byte region [0x606000279260,0x6060002792a0) allocated by thread T28 ([ET_NET 26]) here: #0 0x58399a in __interceptor_malloc (/home/y/bin64/traffic_server+0x58399a) #1 0x2b95d69dae16 in ats_malloc ../../../trafficserver/lib/ts/ink_memory.cc:59 #2 0x5c317c in DefaultAlloc::alloc(int) ../../../trafficserver/lib/ts/defalloc.h:34 #3 0x97e5d9 in Vec<PriorityQueueEntry<RefCountCacheHashEntry*>*, DefaultAlloc, 2>::addx() ../../../trafficserver/lib/ts/Vec.h:826 #4 0x97dca1 in Vec<PriorityQueueEntry<RefCountCacheHashEntry*>*, DefaultAlloc, 2>::add_internal(PriorityQueueEntry<RefCountCacheHashEntry*>*) ../../../trafficserver/lib/ts/Vec.h:496 #5 0x97d8e3 in Vec<PriorityQueueEntry<RefCountCacheHashEntry*>*, DefaultAlloc, 2>::add(PriorityQueueEntry<RefCountCacheHashEntry*>*) ../../../trafficserver/lib/ts/Vec.h:272 #6 0x97b584 in Vec<PriorityQueueEntry<RefCountCacheHashEntry*>*, DefaultAlloc, 2>::push_back(PriorityQueueEntry<RefCountCacheHashEntry*>*) ../../../trafficserver/lib/ts/Vec.h:65 #7 0x979518 in PriorityQueue<RefCountCacheHashEntry*, PriorityQueueLess<RefCountCacheHashEntry*> >::push(PriorityQueueEntry<RefCountCacheHashEntry*>*) ../../../trafficserver/lib/ts/PriorityQueue.h:88 #8 0x9775d9 in RefCountCachePartition<HostDBInfo>::put(unsigned long, HostDBInfo*, int, int) ../../../trafficserver/iocore/hostdb/P_RefCountCache.h:210 #9 0x975b31 in RefCountCache<HostDBInfo>::put(unsigned long, HostDBInfo*, int, long) ../../../trafficserver/iocore/hostdb/P_RefCountCache.h:462 #10 0x964ef6 in HostDBContinuation::dnsEvent(int, HostEnt*) ../../../trafficserver/iocore/hostdb/HostDB.cc:1422 #11 0x5ef3c4 in Continuation::handleEvent(int, void*) ../../../trafficserver/iocore/eventsystem/I_Continuation.h:153 #12 0x98d024 in DNSEntry::postEvent(int, Event*) ../../../trafficserver/iocore/dns/DNS.cc:1269 #13 0x5ef3c4 in Continuation::handleEvent(int, void*) ../../../trafficserver/iocore/eventsystem/I_Continuation.h:153 #14 0xb30fb8 in EThread::process_event(Event*, int) ../../../trafficserver/iocore/eventsystem/UnixEThread.cc:146 #15 0xb314f4 in EThread::execute() ../../../trafficserver/iocore/eventsystem/UnixEThread.cc:200 #16 0xb2f963 in spawn_thread_internal ../../../trafficserver/iocore/eventsystem/Thread.cc:84 #17 0x2b95d7633aa0 in start_thread (/lib64/libpthread.so.0+0x3b88c07aa0) Thread T31 ([ET_NET 29]) created by T0 ([TS_MAIN]) here: #0 0x525904 in pthread_create (/home/y/bin64/traffic_server+0x525904) #1 0xb2f4ee in ink_thread_create ../../../trafficserver/lib/ts/ink_thread.h:152 #2 0xb2fa8d in Thread::start(char const*, unsigned long, void* (*)(void*), void*, void*) ../../../trafficserver/iocore/eventsystem/Thread.cc:99 #3 0xb353db in EventProcessor::start(int, unsigned long) ../../../trafficserver/iocore/eventsystem/UnixEventProcessor.cc:240 #4 0x650302 in main ../../trafficserver/proxy/Main.cc:1715 #5 0x3b8801ed5c in __libc_start_main (/lib64/libc.so.6+0x3b8801ed5c) Thread T28 ([ET_NET 26]) created by T0 ([TS_MAIN]) here: #0 0x525904 in pthread_create (/home/y/bin64/traffic_server+0x525904) #1 0xb2f4ee in ink_thread_create ../../../trafficserver/lib/ts/ink_thread.h:152 #2 0xb2fa8d in Thread::start(char const*, unsigned long, void* (*)(void*), void*, void*) ../../../trafficserver/iocore/eventsystem/Thread.cc:99 #3 0xb353db in EventProcessor::start(int, unsigned long) ../../../trafficserver/iocore/eventsystem/UnixEventProcessor.cc:240 #4 0x650302 in main ../../trafficserver/proxy/Main.cc:1715 #5 0x3b8801ed5c in __libc_start_main (/lib64/libc.so.6+0x3b8801ed5c) SUMMARY: AddressSanitizer: heap-buffer-overflow ../../../trafficserver/lib/ts/PriorityQueue.h:126 PriorityQueue<RefCountCacheHashEntry*, PriorityQueueLess<RefCountCacheHashEntry*> >::erase(PriorityQueueEntry<RefCountCacheHashEntry*>*) Shadow bytes around the buggy address: 0x0c0c80047200: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c0c80047210: 00 00 00 00 00 00 02 fa fa fa fa fa 00 00 00 00 0x0c0c80047220: 00 00 00 00 fa fa fa fa fd fd fd fd fd fd fd fd 0x0c0c80047230: fa fa fa fa 00 00 00 00 00 00 02 fa fa fa fa fa 0x0c0c80047240: 00 00 00 00 00 00 02 fa fa fa fa fa 00 00 00 00 =>0x0c0c80047250: 00 00 00 00[fa]fa fa fa 00 00 00 00 00 00 02 fa 0x0c0c80047260: fa fa fa fa 00 00 00 00 00 00 00 00 fa fa fa fa 0x0c0c80047270: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c0c80047280: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd 0x0c0c80047290: fa fa fa fa 00 00 00 00 00 00 04 fa fa fa fa fa 0x0c0c800472a0: 00 00 00 00 00 00 00 fa fa fa fa fa fa fa fa fa Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Heap right redzone: fb Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack partial redzone: f4 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe ==8079==ABORTING {noformat} > Crash from hostdb in PriorityQueueLess > -------------------------------------- > > Key: TS-4915 > URL: https://issues.apache.org/jira/browse/TS-4915 > Project: Traffic Server > Issue Type: Bug > Components: HostDB > Reporter: Susan Hinrichs > Priority: Blocker > Fix For: 7.1.0 > > > Saw this while testing fix for TS-4813 with debug enabled. > {code} > (gdb) bt full > #0 0x0000000000547bfe in RefCountCacheHashEntry::operator< (this=0x1cc0880, > v2=...) at ../iocore/hostdb/P_RefCountCache.h:94 > No locals. > #1 0x000000000054988d in > PriorityQueueLess<RefCountCacheHashEntry*>::operator() (this=0x2b78a9a2587b, > a=@0x2b78f402af68, b=@0x2b78f402aa28) > at ../lib/ts/PriorityQueue.h:41 > No locals. > #2 0x0000000000549785 in PriorityQueue<RefCountCacheHashEntry*, > PriorityQueueLess<RefCountCacheHashEntry*> >::_bubble_up (this=0x1cb2990, > index=2) at ../lib/ts/PriorityQueue.h:191 > comp = {<No data fields>} > parent = 0 > #3 0x00000000006ecfcc in PriorityQueue<RefCountCacheHashEntry*, > PriorityQueueLess<RefCountCacheHashEntry*> >::push (this=0x1cb2990, > entry=0x2b78f402af60) at ../../lib/ts/PriorityQueue.h:91 > len = 2 > #4 0x00000000006ec206 in RefCountCachePartition<HostDBInfo>::put > (this=0x1cb2900, key=6912554662447498853, item=0x2b78aee04f00, size=96, > expire_time=1475202356) at ./P_RefCountCache.h:210 > expiry_entry = 0x2b78f402af60 > __func__ = "put" > val = 0x1cc0880 > #5 0x00000000006eb3de in RefCountCache<HostDBInfo>::put (this=0x18051e0, > key=6912554662447498853, item=0x2b78aee04f00, size=16, > expiry_time=1475202356) at ./P_RefCountCache.h:462 > No locals. > #6 0x00000000006e2d8e in HostDBContinuation::dnsEvent (this=0x2b7938020f00, > event=600, e=0x2b78ac009440) at HostDB.cc:1422 > is_rr = false > old_rr_data = 0x0 > first_record = 0x2b78ac0094f8 > m = 0x1 > failed = false > old_r = {m_ptr = 0x0} > af = 2 '\002' > s_size = 16 > rrsize = 0 > allocSize = 16 > r = 0x2b78aee04f00 > old_info = {<RefCountObj> = {<ForceVFPTToTop> = {_vptr.ForceVFPTToTop > = 0x7f3630}, m_refcount = 0}, iobuffer_index = 0, > key = 47797242059264, app = {allotment = {application1 = 5326300, > application2 = 0}, http_data = {http_version = 4, > pipeline_max = 59, keepalive_timeout = 17, fail_count = 81, > unused1 = 0, last_failure = 0}, rr = {offset = 5326300}}, data = { > ip = {sa = {sa_family = 54488, sa_data = > "^\000\000\000\000\000\020\034$\274x+\000"}, sin = {sin_family = 54488, > sin_port = 94, > sin_addr = {s_addr = 0}, sin_zero = "\020\034$\274x+\000"}, > sin6 = {sin6_family = 54488, sin6_port = 94, sin6_flowinfo = 0, > sin6_addr = {__in6_u = {__u6_addr8 = > "\020\034$\274x+\000\000\030\036$\274\375\b\000", __u6_addr16 = {7184, 48164, > 11128, > 0, 7704, 48164, 2301, 0}, __u6_addr32 = {3156483088, > 11128, 3156483608, 2301}}}, sin6_scope_id = 3156478176}}, > hostname_offset = 6214872, srv = {srv_offset = 54488, srv_weight > = 94, srv_priority = 0, srv_port = 0, key = 3156483088}}, > hostname_offset = 11128, ip_timestamp = 2845989456, > ip_timeout_interval = 11128, is_srv = 0, reverse_dns = 0, round_robin = 1, > round_robin_elt = 0} > valid_records = 0 > tip = {_family = 2, _addr = {_ip4 = 540420056, _ip6 = {__in6_u = > {__u6_addr8 = "\330'6 x+\000\000\360L\020\250x+\000", > __u6_addr16 = {10200, 8246, 11128, 0, 19696, 43024, 11128, > 0}, __u6_addr32 = {540420056, 11128, 2819640560, 11128}}}, > _byte = "\330'6 x+\000\000\360L\020\250x+\000", _u32 = > {540420056, 11128, 2819640560, 11128}, _u64 = {47794936489944, > 47797215710448}}} > ttl_seconds = 132 > aname = 0x2b7938021000 "fbmm1.zenfs.com" > offset = 96 > thread = 0x2b78a8101010 > __func__ = "dnsEvent" > #7 0x00000000005145dc in Continuation::handleEvent (this=0x2b7938020f00, > event=600, data=0x2b78ac009440) > at ../iocore/eventsystem/I_Continuation.h:153 > No locals. > #8 0x00000000006f681e in DNSEntry::postEvent (this=0x2b78f4028600) at > DNS.cc:1269 > __func__ = "postEvent" > #9 0x00000000005145dc in Continuation::handleEvent (this=0x2b78f4028600, > event=1, data=0x2aac954db040) > at ../iocore/eventsystem/I_Continuation.h:153 > No locals. > #10 0x00000000007bc9be in EThread::process_event (this=0x2b78a8101010, > e=0x2aac954db040, calling_code=1) at UnixEThread.cc:143 > c_temp = 0x2b78f4028600 > lock = {m = {m_ptr = 0x17dea10}, lock_acquired = true} > __func__ = "process_event" > #11 0x00000000007bcc2d in EThread::execute (this=0x2b78a8101010) at > UnixEThread.cc:197 > done_one = false > e = 0x2aac954db040 > NegativeQueue = {<DLL<Event, Event::Link_link>> = {head = 0x18ce400}, > tail = 0x18ce400} > next_time = 1475191803711988905 > __func__ = "execute" > #12 0x00000000007bbfd2 in spawn_thread_internal (a=0x17fb9a0) at Thread.cc:84 > p = 0x17fb9a0 > #13 0x00002b78a2555aa1 in start_thread () from /lib64/libpthread.so.0 > No symbol table info available. > #14 0x00000032310e893d in clone () from /lib64/libc.so.6 > No symbol table info available. > core == ET_NET 13 and core == ET_NET 20 > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)