moonchen opened a new issue #8735:
URL: https://github.com/apache/trafficserver/issues/8735


   ```
   Mar 15 18:13:49 redacted traffic_manager[53076]: 
=================================================================
   Mar 15 18:13:49 redacted traffic_manager[53076]: ==53086==ERROR: 
AddressSanitizer: heap-use-after-free on address 0x629000032200 at pc 
0x7f478e8ebe57 bp 0x7f47c9a88a10 sp 0x7f47c9a88a08
   Mar 15 18:13:49 redacted traffic_manager[53076]: READ of size 4 at 
0x629000032200 thread T6 ([ET_NET 4])
   Mar 15 18:13:51 redacted traffic_manager[53076]: #0 0x7f478e8ebe56 in 
hc_process_read /redacted/plugins/healthchecks/healthchecks.c:412:25
   Mar 15 18:13:51 redacted traffic_manager[53076]: #1 0x7f478e8ebe56 in 
hc_intercept /redacted/plugins/healthchecks/healthchecks.c:479:5
   Mar 15 18:13:51 redacted traffic_manager[53076]: #2 0x562f0a94bc14 in 
INKContInternal::handle_event(int, void*) 
/redacted/src/traffic_server/InkAPI.cc:1140:29
   Mar 15 18:13:51 redacted traffic_manager[53076]: #3 0x562f0afefcd7 in 
PluginVC::process_read_side(bool) /redacted/iocore/eventsystem/I_Continuation.h
   Mar 15 18:13:51 redacted traffic_manager[53076]: #4 0x562f0aff1ae1 in 
PluginVC::process_write_side(bool) /redacted/proxy/PluginVC.cc:568:19
   Mar 15 18:13:51 redacted traffic_manager[53076]: #5 0x562f0afecc0e in 
PluginVC::main_handler(int, void*) /redacted/proxy/PluginVC.cc:224:7
   Mar 15 18:13:51 redacted traffic_manager[53076]: #6 0x562f0b1a7419 in 
Continuation::handleEvent(int, void*) 
/redacted/iocore/eventsystem/./I_Continuation.h:219:12
   Mar 15 18:13:51 redacted traffic_manager[53076]: #7 0x562f0b1a7419 in 
EThread::process_event(Event*, int) 
/redacted/iocore/eventsystem/UnixEThread.cc:164:22
   Mar 15 18:13:51 redacted traffic_manager[53076]: #8 0x562f0b1a8391 in 
EThread::process_queue(Queue<Event, Event::Link_link>*, int*, int*) 
/redacted/iocore/eventsystem/UnixEThread.cc:199:7
   Mar 15 18:13:51 redacted traffic_manager[53076]: #9 0x562f0b1a94b4 in 
EThread::execute_regular() /redacted/iocore/eventsystem/UnixEThread.cc:259:5
   Mar 15 18:13:51 redacted traffic_manager[53076]: #10 0x562f0b1aa7cf in 
EThread::execute() /redacted/iocore/eventsystem/UnixEThread.cc:364:11
   Mar 15 18:13:51 redacted traffic_manager[53076]: #11 0x562f0b1a5044 in 
spawn_thread_internal(void*) /redacted/iocore/eventsystem/Thread.cc
   Mar 15 18:13:51 redacted traffic_manager[53076]: #12 0x7f47d228bea4 in 
start_thread (/lib64/libpthread.so.0+0x7ea4)
   Mar 15 18:13:51 redacted traffic_manager[53076]: #13 0x7f47d18c59fc in clone 
(/lib64/libc.so.6+0xfe9fc)
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x629000032200 is located 0 
bytes inside of 16408-byte region [0x629000032200,0x629000036218)
   Mar 15 18:13:51 redacted traffic_manager[53076]: freed by thread T37 here:
   Mar 15 18:13:51 redacted traffic_manager[53076]: #0 0x562f0a8f0cf2 in free 
(/redacted/traffic_server+0x663cf2)
   Mar 15 18:13:51 redacted traffic_manager[53076]: #1 0x7f478e8ea84e in 
hc_thread /redacted/plugins/healthchecks/healthchecks.c:207:11
   Mar 15 18:13:51 redacted traffic_manager[53076]: #2 0x562f0a9a5320 in 
ink_thread_trampoline(void*) /redacted/src/traffic_server/InkIOCoreAPI.cc:128:12
   Mar 15 18:13:51 redacted traffic_manager[53076]: #3 0x7f47d228bea4 in 
start_thread (/lib64/libpthread.so.0+0x7ea4)
   Mar 15 18:13:51 redacted traffic_manager[53076]: previously allocated by 
thread T0 ([TS_MAIN]) here:
   Mar 15 18:13:51 redacted traffic_manager[53076]: #0 0x562f0a8f0f5d in malloc 
(/redacted/traffic_server+0x663f5d)
   Mar 15 18:13:51 redacted traffic_manager[53076]: #1 0x7f47d3af8b32 in 
ats_malloc /redacted/src/tscore/ink_memory.cc:64:9
   Mar 15 18:13:51 redacted traffic_manager[53076]: #2 0x7f478e8ea350 in 
parse_configs /redacted/plugins/healthchecks/healthchecks.c:358:23
   Mar 15 18:13:51 redacted traffic_manager[53076]: #3 0x7f478e8ea350 in 
TSPluginInit /redacted/plugins/healthchecks/healthchecks.c:568:27
   Mar 15 18:13:51 redacted traffic_manager[53076]: #4 0x562f0afe8f7a in 
single_plugin_init(int, char**, bool) /redacted/proxy/Plugin.cc:181:5
   Mar 15 18:13:51 redacted traffic_manager[53076]: #5 0x562f0afe8f7a in 
plugin_init(bool) /redacted/proxy/Plugin.cc:351:14
   Mar 15 18:13:51 redacted traffic_manager[53076]: #6 0x562f0a9c0e45 in main 
/redacted/src/traffic_server/traffic_server.cc:2103:11
   Mar 15 18:13:51 redacted traffic_manager[53076]: #7 0x7f47d17e9554 in 
__libc_start_main (/lib64/libc.so.6+0x22554)
   Mar 15 18:13:51 redacted traffic_manager[53076]: Thread T6 ([ET_NET 4]) 
created by T0 ([TS_MAIN]) here:
   Mar 15 18:13:51 redacted traffic_manager[53076]: #0 0x562f0a8db73c in 
pthread_create (/redacted/traffic_server+0x64e73c)
   Mar 15 18:13:51 redacted traffic_manager[53076]: #1 0x562f0b1a4deb in 
ink_thread_create(unsigned long*, void* (*)(void*), void*, int, unsigned long, 
void*) /redacted/iocore/eventsystem/../../include/tscore/ink_thread.h:159:9
   Mar 15 18:13:51 redacted traffic_manager[53076]: #2 0x562f0b1a4deb in 
Thread::start(char const*, void*, unsigned long, std::__1::function<void ()> 
const&) /redacted/iocore/eventsystem/Thread.cc:108:3
   Mar 15 18:13:51 redacted traffic_manager[53076]: #3 0x562f0b1b27d3 in 
EventProcessor::spawn_event_threads(int, int, unsigned long) 
/redacted/iocore/eventsystem/UnixEventProcessor.cc:392:21
   Mar 15 18:13:51 redacted traffic_manager[53076]: #4 0x562f0b1b3fe8 in 
EventProcessor::start(int, unsigned long) 
/redacted/iocore/eventsystem/UnixEventProcessor.cc:455:9
   Mar 15 18:13:51 redacted traffic_manager[53076]: #5 0x562f0a9c00e8 in main 
/redacted/src/traffic_server/traffic_server.cc:2039:18
   Mar 15 18:13:51 redacted traffic_manager[53076]: #6 0x7f47d17e9554 in 
__libc_start_main (/lib64/libc.so.6+0x22554)
   Mar 15 18:13:51 redacted traffic_manager[53076]: Thread T37 created by T0 
([TS_MAIN]) here:
   Mar 15 18:13:51 redacted traffic_manager[53076]: #0 0x562f0a8db73c in 
pthread_create (/redacted/traffic_server+0x64e73c)
   Mar 15 18:13:51 redacted traffic_manager[53076]: #1 0x562f0a9a50d5 in 
ink_thread_create(unsigned long*, void* (*)(void*), void*, int, unsigned long, 
void*) /redacted/src/../include/tscore/ink_thread.h:159:9
   Mar 15 18:13:51 redacted traffic_manager[53076]: #2 0x562f0a9a50d5 in 
TSThreadCreate /redacted/src/traffic_server/InkIOCoreAPI.cc:156:3
   Mar 15 18:13:51 redacted traffic_manager[53076]: #3 0x7f478e8e9d6b in 
TSPluginInit /redacted/plugins/healthchecks/healthchecks.c:574:8
   Mar 15 18:13:51 redacted traffic_manager[53076]: #4 0x562f0afe8f7a in 
single_plugin_init(int, char**, bool) /redacted/proxy/Plugin.cc:181:5
   Mar 15 18:13:51 redacted traffic_manager[53076]: #5 0x562f0afe8f7a in 
plugin_init(bool) /redacted/proxy/Plugin.cc:351:14
   Mar 15 18:13:51 redacted traffic_manager[53076]: #6 0x562f0a9c0e45 in main 
/redacted/src/traffic_server/traffic_server.cc:2103:11
   Mar 15 18:13:51 redacted traffic_manager[53076]: #7 0x7f47d17e9554 in 
__libc_start_main (/lib64/libc.so.6+0x22554)
   Mar 15 18:13:51 redacted traffic_manager[53076]: SUMMARY: AddressSanitizer: 
heap-use-after-free /redacted/plugins/healthchecks/healthchecks.c:412:25 in 
hc_process_read
   Mar 15 18:13:51 redacted traffic_manager[53076]: Shadow bytes around the 
buggy address:
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x0c527fffe3f0: fa fa fa fa 
fa fa fa fa fa fa fa fa fa fa fa fa
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x0c527fffe400: fa fa fa fa 
fa fa fa fa fa fa fa fa fa fa fa fa
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x0c527fffe410: fa fa fa fa 
fa fa fa fa fa fa fa fa fa fa fa fa
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x0c527fffe420: fa fa fa fa 
fa fa fa fa fa fa fa fa fa fa fa fa
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x0c527fffe430: fa fa fa fa 
fa fa fa fa fa fa fa fa fa fa fa fa
   Mar 15 18:13:51 redacted traffic_manager[53076]: =>0x0c527fffe440:[fd]fd fd 
fd fd fd fd fd fd fd fd fd fd fd fd fd
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x0c527fffe450: fd fd fd fd 
fd fd fd fd fd fd fd fd fd fd fd fd
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x0c527fffe460: fd fd fd fd 
fd fd fd fd fd fd fd fd fd fd fd fd
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x0c527fffe470: fd fd fd fd 
fd fd fd fd fd fd fd fd fd fd fd fd
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x0c527fffe480: fd fd fd fd 
fd fd fd fd fd fd fd fd fd fd fd fd
   Mar 15 18:13:51 redacted traffic_manager[53076]: 0x0c527fffe490: fd fd fd fd 
fd fd fd fd fd fd fd fd fd fd fd fd
   Mar 15 18:13:51 redacted traffic_manager[53076]: Shadow byte legend (one 
shadow byte represents 8 application bytes):
   Mar 15 18:13:51 redacted traffic_manager[53076]: Addressable:           00
   Mar 15 18:13:51 redacted traffic_manager[53076]: Partially addressable: 01 
02 03 04 05 06 07
   Mar 15 18:13:51 redacted traffic_manager[53076]: Heap left redzone:       fa
   Mar 15 18:13:51 redacted traffic_manager[53076]: Freed heap region:       fd
   Mar 15 18:13:51 redacted traffic_manager[53076]: Stack left redzone:      f1
   Mar 15 18:13:51 redacted traffic_manager[53076]: Stack mid redzone:       f2
   Mar 15 18:13:51 redacted traffic_manager[53076]: Stack right redzone:     f3
   Mar 15 18:13:51 redacted traffic_manager[53076]: Stack after return:      f5
   Mar 15 18:13:51 redacted traffic_manager[53076]: Stack use after scope:   f8
   Mar 15 18:13:51 redacted traffic_manager[53076]: Global redzone:          f9
   Mar 15 18:13:51 redacted traffic_manager[53076]: Global init order:       f6
   Mar 15 18:13:51 redacted traffic_manager[53076]: Poisoned by user:        f7
   Mar 15 18:13:51 redacted traffic_manager[53076]: Container overflow:      fc
   Mar 15 18:13:51 redacted traffic_manager[53076]: Array cookie:            ac
   Mar 15 18:13:51 redacted traffic_manager[53076]: Intra object redzone:    bb
   Mar 15 18:13:51 redacted traffic_manager[53076]: ASan internal:           fe
   Mar 15 18:13:51 redacted traffic_manager[53076]: Left alloca redzone:     ca
   Mar 15 18:13:51 redacted traffic_manager[53076]: Right alloca redzone:    cb
   Mar 15 18:13:51 redacted traffic_manager[53076]: Shadow gap:              cc
   Mar 15 18:13:51 redacted traffic_manager[53076]: ==53086==ABORTING
   ```
   
   One possible order of operations that causes the race condition:
   
   1. hc_intercept continuation is created with g_config->data.  
   2. Inotify causes g_config->data to be replaced, and the old one is put on 
the freelist.  
   3. hc_process_read reads the old data.
   4. old data is freed by freelist
   5. hc_process_read dereferences old data.
   
   


-- 
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]


Reply via email to