Hi Michael, This report is already severe enough to stop by and fix it. A write overflowing a stack buffer can be potentially exploited to gain control of your program, not to mention the possible stability issues caused by accidentally overwriting other variables and/or stack pointer.
HTH, Alex On Fri, Mar 22, 2019 at 3:06 AM Michael Thomson <mthomson...@gmail.com> wrote: > > Hi > > I am getting the following ASAN issue when i try to check a project that uses > Thrift library > > I have tried a number of ways to add a suppression into the ASAN_OPTIONS but > nothing seems to work > > Does any one have any suggestions on how to get this message suppressed or at > least to be able to tell it to continue to run after this report as even with > halt_on_error=0 it still stops here > > thanks > Michael. > > leaf1> ==1207==ERROR: AddressSanitizer: stack-buffer-overflow on address > 0x7ff75e2d1a60 at pc 0x000001357d5f bp 0x7ff75e2d19b0 sp 0x7ff75e2d19a8 > leaf1> WRITE of size 8 at 0x7ff75e2d1a60 thread T10 > leaf1> #0 0x1357d5e in > std::__shared_ptr<apache::thrift::transport::TTransport, > (__gnu_cxx::_Lock_policy)2>::__shared_ptr(std::__shared_ptr<apache::thrift::transport::TTransport, > (__gnu_cxx::_Lock_policy)2> const&) > /usr/local/my-deps/20190102/include/c++/6.4.0/bits/shared_ptr_base.h:926 > leaf1> #1 0x504401e in > std::shared_ptr<apache::thrift::transport::TTransport>::shared_ptr(std::shared_ptr<apache::thrift::transport::TTransport> > const&) (/home/michael/my-core-internal/build/bin/my_server+0x504401e) > leaf1> #2 0x50761c6 in > apache::thrift::protocol::TProtocol::getTransport() > (/home/michael/my-core-internal/build/bin/my_server+0x50761c6) > leaf1> #3 0x5075d61 in > apache::thrift::server::TConnectedClient::cleanup() > (/home/michael/my-core-internal/build/bin/my_server+0x5075d61) > leaf1> #4 0x50759af in apache::thrift::server::TConnectedClient::run() > (/home/michael/my-core-internal/build/bin/my_server+0x50759af) > leaf1> #5 0x505de78 in > apache::thrift::server::TThreadedServer::TConnectedClientRunner::run() > (/home/michael/my-core-internal/build/bin/my_server+0x505de78) > leaf1> #6 0x506ee0b in > apache::thrift::concurrency::PthreadThread::threadMain(void*) > (/home/michael/my-core-internal/build/bin/my_server+0x506ee0b) > leaf1> #7 0x7ff76b51fdd4 in start_thread (/lib64/libpthread.so.0+0x7dd4) > leaf1> #8 0x7ff76b248eac in __clone (/lib64/libc.so.6+0xfdeac) > leaf1> > leaf1> Address 0x7ff75e2d1a60 is located in stack of thread T10 at offset 64 > in frame > leaf2> ================================================================= > leaf2> ==1209==ERROR: AddressSanitizer: stack-buffer-overflow on address > 0x7ff6e89d1a60 at pc 0x000001357d5f bp 0x7ff6e89d19b0 sp 0x7ff6e89d19a8 > leaf2> WRITE of size 8 at 0x7ff6e89d1a60 thread T10 > leaf2> #0 0x1357d5e in > std::__shared_ptr<apache::thrift::transport::TTransport, > (__gnu_cxx::_Lock_policy)2>::__shared_ptr(std::__shared_ptr<apache::thrift::transport::TTransport, > (__gnu_cxx::_Lock_policy)2> const&) > /usr/local/my-deps/20190102/include/c++/6.4.0/bits/shared_ptr_base.h:926 > leaf2> #1 0x504401e in > std::shared_ptr<apache::thrift::transport::TTransport>::shared_ptr(std::shared_ptr<apache::thrift::transport::TTransport> > const&) (/home/michael/my-core-internal/build/bin/my_server+0x504401e) > leaf2> #2 0x50761c6 in > apache::thrift::protocol::TProtocol::getTransport() > (/home/michael/my-core-internal/build/bin/my_server+0x50761c6) > leaf2> #3 0x5075d61 in > apache::thrift::server::TConnectedClient::cleanup() > (/home/michael/my-core-internal/build/bin/my_server+0x5075d61) > leaf2> #4 0x50759af in apache::thrift::server::TConnectedClient::run() > (/home/michael/my-core-internal/build/bin/my_server+0x50759af) > leaf2> #5 0x505de78 in > apache::thrift::server::TThreadedServer::TConnectedClientRunner::run() > (/home/michael/my-core-internal/build/bin/my_server+0x505de78) > leaf2> #6 0x506ee0b in > apache::thrift::concurrency::PthreadThread::threadMain(void*) > (/home/michael/my-core-internal/build/bin/my_server+0x506ee0b) > leaf2> #7 0x7ff6f5c1edd4 in start_thread (/lib64/libpthread.so.0+0x7dd4) > leaf2> #8 0x7ff6f5947eac in __clone (/lib64/libc.so.6+0xfdeac) > leaf2> > leaf2> Address 0x7ff6e89d1a60 is located in stack of thread T10 at offset 64 > in frame > leaf1> #0 0x13565b1 in > apache::thrift::TDispatchProcessor::process(std::shared_ptr<apache::thrift::protocol::TProtocol>, > std::shared_ptr<apache::thrift::protocol::TProtocol>, void*) > /usr/local/my-deps/20190102/include/thrift/TDispatchProcessor.h:108 > leaf1> > leaf1> This frame has 3 object(s): > leaf1> [32, 36) 'mtype' > leaf1> [96, 100) 'seqid' <== Memory access at offset 64 underflows this > variable > leaf1> [160, 192) 'fname' > leaf1> HINT: this may be a false positive if your program uses some custom > stack unwind mechanism or swapcontext > leaf1> (longjmp and C++ exceptions *are* supported) > leaf1> Thread T10 created by T8 here: > leaf2> #0 0x13565b1 in > apache::thrift::TDispatchProcessor::process(std::shared_ptr<apache::thrift::protocol::TProtocol>, > std::shared_ptr<apache::thrift::protocol::TProtocol>, void*) > /usr/local/my-deps/20190102/include/thrift/TDispatchProcessor.h:108 > leaf2> > leaf2> This frame has 3 object(s): > leaf2> [32, 36) 'mtype' > leaf2> [96, 100) 'seqid' <== Memory access at offset 64 underflows this > variable > leaf2> [160, 192) 'fname' > leaf2> HINT: this may be a false positive if your program uses some custom > stack unwind mechanism or swapcontext > leaf2> (longjmp and C++ exceptions *are* supported) > leaf2> Thread T10 created by T8 here: > leaf1> #0 0x7ff76c0ce7e9 in __interceptor_pthread_create > ../../.././libsanitizer/asan/asan_interceptors.cc:236 > leaf1> #1 0x506fce4 in > apache::thrift::concurrency::PthreadThread::start() > (/home/michael/my-core-internal/build/bin/my_server+0x506fce4) > leaf1> #2 0x505dbfc in > apache::thrift::server::TThreadedServer::onClientConnected(std::shared_ptr<apache::thrift::server::TConnectedClient> > const&) (/home/michael/my-core-internal/build/bin/my_server+0x505dbfc) > leaf1> #3 0x5072c91 in > apache::thrift::server::TServerFramework::newlyConnectedClient(std::shared_ptr<apache::thrift::server::TConnectedClient> > const&) (/home/michael/my-core-internal/build/bin/my_server+0x5072c91) > leaf1> #4 0x50723fd in apache::thrift::server::TServerFramework::serve() > (/home/michael/my-core-internal/build/bin/my_server+0x50723fd) > leaf1> #5 0x505d996 in apache::thrift::server::TThreadedServer::serve() > (/home/michael/my-core-internal/build/bin/my_server+0x505d996) > leaf2> #0 0x7ff6f67cd7e9 in __interceptor_pthread_create > ../../.././libsanitizer/asan/asan_interceptors.cc:236 > leaf2> #1 0x506fce4 in > apache::thrift::concurrency::PthreadThread::start() > (/home/michael/my-core-internal/build/bin/my_server+0x506fce4) > leaf2> #2 0x505dbfc in > apache::thrift::server::TThreadedServer::onClientConnected(std::shared_ptr<apache::thrift::server::TConnectedClient> > const&) (/home/michael/my-core-internal/build/bin/my_server+0x505dbfc) > leaf2> #3 0x5072c91 in > apache::thrift::server::TServerFramework::newlyConnectedClient(std::shared_ptr<apache::thrift::server::TConnectedClient> > const&) (/home/michael/my-core-internal/build/bin/my_server+0x5072c91) > leaf2> #4 0x50723fd in apache::thrift::server::TServerFramework::serve() > (/home/michael/my-core-internal/build/bin/my_server+0x50723fd) > leaf2> #5 0x505d996 in apache::thrift::server::TThreadedServer::serve() > (/home/michael/my-core-internal/build/bin/my_server+0x505d996) > leaf1> #6 0x1111d75 in > start_server(apache::thrift::server::TThreadedServer&) > /home/michael/my-core-internal/MYServer.cpp:140 > leaf1> #7 0x1126b77 in std::thread::_State_impl<std::_Bind_simple<void > (*(std::reference_wrapper<apache::thrift::server::TThreadedServer>))(apache::thrift::server::TThreadedServer&)> > >::_M_run() (/home/michael/my-core-internal/build/bin/my_server+0x1126b77) > leaf1> #8 0x532e00e in execute_native_thread_routine > ../../../.././libstdc++-v3/src/c++11/thread.cc:83 > leaf1> > leaf1> Thread T8 created by T0 here: > leaf1> #0 0x7ff76c0ce7e9 in __interceptor_pthread_create > ../../.././libsanitizer/asan/asan_interceptors.cc:236 > leaf1> #1 0x532e304 in __gthread_create > /home/jenkins-slave/workspace/my-deps/scripts/gcc-6.4.0/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:662 > leaf1> #2 0x532e304 in > std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, > std::default_delete<std::thread::_State> >, void (*)()) > ../../../.././libstdc++-v3/src/c++11/thread.cc:163 > leaf1> #3 0x112516e in main > /home/michael/my-core-internal/MYServer.cpp:997 > leaf1> #4 0x7ff76b16d3d4 in __libc_start_main (/lib64/libc.so.6+0x223d4) > leaf1> > leaf1> SUMMARY: AddressSanitizer: stack-buffer-overflow > /usr/local/my-deps/20190102/include/c++/6.4.0/bits/shared_ptr_base.h:926 in > std::__shared_ptr<apache::thrift::transport::TTransport, > (__gnu_cxx::_Lock_policy)2>::__shared_ptr(std::__shared_ptr<apache::thrift::transport::TTransport, > (__gnu_cxx::_Lock_policy)2> const&) > leaf1> Shadow bytes around the buggy address: > leaf1> 0x0fff6bc522f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > leaf1> 0x0fff6bc52300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > leaf1> 0x0fff6bc52310: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > leaf1> 0x0fff6bc52320: 00 00 f1 f1 f1 f1 01 f4 f4 f4 f2 f2 f2 f2 04 f4 > leaf1> 0x0fff6bc52330: f4 f4 f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 > leaf1> =>0x0fff6bc52340: 00 00 00 00 f1 f1 f1 f1 04 f4 f4 f4[f2]f2 f2 f2 > leaf1> 0x0fff6bc52350: 04 f4 f4 f4 f2 f2 f2 f2 00 00 00 00 f3 f3 f3 f3 > leaf1> 0x0fff6bc52360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > leaf1> 0x0fff6bc52370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > leaf1> 0x0fff6bc52380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > leaf1> 0x0fff6bc52390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > leaf1> Shadow byte legend (one shadow byte represents 8 application bytes): > leaf1> Addressable: 00 > leaf1> Partially addressable: 01 02 03 04 05 06 07 > leaf1> Heap left redzone: fa > leaf1> Heap right redzone: fb > leaf1> Freed heap region: fd > leaf1> Stack left redzone: f1 > leaf1> Stack mid redzone: f2 > leaf1> Stack right redzone: f3 > leaf1> Stack partial redzone: f4 > leaf1> Stack after return: f5 > leaf1> Stack use after scope: f8 > leaf1> Global redzone: f9 > leaf1> Global init order: f6 > leaf1> Poisoned by user: f7 > leaf1> Container overflow: fc > leaf1> Array cookie: ac > leaf1> Intra object redzone: bb > leaf1> ASan internal: fe > leaf1> Left alloca redzone: ca > leaf1> Right alloca redzone: cb > leaf1> Stats: 5M malloced (1M for red zones) by 34367 calls > leaf1> Stats: 0M realloced by 120 calls > leaf1> Stats: 3M freed by 11520 calls > leaf1> Stats: 0M really freed by 0 calls > leaf1> Stats: 12M (12M-0M) mmaped; 168 maps, 0 unmaps > leaf1> mallocs by size class: 2:1231; 3:5858; 4:3328; 6:7246; 7:3819; > 8:2858; 11:3778; 12:3977; 13:363; 14:231; 15:155; 16:39; 17:113; 18:284; > 19:25; 20:14; 21:229; 22:196; 23:14; 24:9; 25:345; 26:23; 27:11; 28:5; 29:37; > 30:2; 31:7; 32:2; 33:30; 35:4; 36:2; 37:72; 39:3; 40:2; 41:7; 43:2; 44:29; > 45:5; 46:1; 48:2; 49:4; 50:2; 52:3; > leaf1> Stats: malloc large: 0 > leaf1> Stats: StackDepot: 2859 ids; 0M allocated > leaf1> Stats: SizeClassAllocator64: 12M mapped in 40389 allocations; remains > 40389 > leaf1> 02 (32): total: 64 K allocs: 1536 remains: 1536 > leaf1> 03 (48): total: 384 K allocs: 7168 remains: 7168 > leaf1> 04 (64): total: 256 K allocs: 3712 remains: 3712 > leaf1> 06 (96): total: 768 K allocs: 7936 remains: 7936 > leaf1> 07 (112): total: 512 K allocs: 4352 remains: 4352 > leaf1> 08 (128): total: 448 K allocs: 3200 remains: 3200 > leaf1> 11 (176): total: 704 K allocs: 3968 remains: 3968 > leaf1> 12 (192): total: 832 K allocs: 4096 remains: 4096 > leaf1> 13 (208): total: 192 K allocs: 640 remains: 640 > leaf1> 14 (224): total: 64 K allocs: 256 remains: 256 > leaf1> 15 (240): total: 128 K allocs: 384 remains: 384 > leaf1> 16 (256): total: 64 K allocs: 128 remains: 128 > leaf1> 17 (320): total: 128 K allocs: 256 remains: 256 > leaf1> 18 (384): total: 192 K allocs: 384 remains: 384 > leaf1> 19 (448): total: 64 K allocs: 128 remains: 128 > leaf1> 20 (512): total: 128 K allocs: 128 remains: 128 > leaf1> 21 (640): total: 256 K allocs: 408 remains: 408 > leaf1> 22 (768): total: 384 K allocs: 510 remains: 510 > leaf1> 23 (896): total: 128 K allocs: 73 remains: 73 > leaf1> 24 (1024): total: 128 K allocs: 64 remains: 64 > leaf1> 25 (1280): total: 704 K allocs: 561 remains: 561 > leaf1> 26 (1536): total: 128 K allocs: 42 remains: 42 > leaf1> 27 (1792): total: 128 K allocs: 36 remains: 36 > leaf1> 28 (2048): total: 128 K allocs: 32 remains: 32 > leaf1> 29 (2560): total: 128 K allocs: 50 remains: 50 > leaf1> 30 (3072): total: 128 K allocs: 21 remains: 21 > leaf1> 31 (3584): total: 128 K allocs: 18 remains: 18 > leaf1> 32 (4096): total: 128 K allocs: 16 remains: 16 > leaf1> 33 (5120): total: 256 K allocs: 48 remains: 48 > leaf1> 35 (7168): total: 128 K allocs: 9 remains: 9 > leaf1> 36 (8192): total: 832 K allocs: 96 remains: 96 > leaf1> 37 (10240): total: 768 K allocs: 72 remains: 72 > leaf1> 39 (14336): total: 128 K allocs: 4 remains: 4 > leaf1> 40 (16384): total: 64 K allocs: 2 remains: 2 > leaf1> 41 (20480): total: 192 K allocs: 7 remains: 7 > leaf1> 43 (28672): total: 128 K allocs: 2 remains: 2 > leaf1> 44 (32768): total: 960 K allocs: 29 remains: 29 > leaf1> 45 (40960): total: 256 K allocs: 5 remains: 5 > leaf1> 46 (49152): total: 128 K allocs: 1 remains: 1 > leaf1> 48 (65536): total: 192 K allocs: 2 remains: 2 > leaf1> 49 (81920): total: 448 K allocs: 4 remains: 4 > leaf1> 50 (98304): total: 320 K allocs: 2 remains: 2 > leaf1> 52 (131072): total: 512 K allocs: 3 remains: 3 > leaf1> Stats: LargeMmapAllocator: allocated 0 times, remains 0 (0 K) max 0 M; > by size logs: > leaf1> ==1207==ABORTING > > -- > You received this message because you are subscribed to the Google Groups > "address-sanitizer" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to address-sanitizer+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Straße, 33 80636 München Geschäftsführer: Paul Manicle, Halimah DeLaine Prado Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg -- You received this message because you are subscribed to the Google Groups "address-sanitizer" group. To unsubscribe from this group and stop receiving emails from it, send an email to address-sanitizer+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.