gcc4.8: TSan deadlock in a single-threaded program

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all, I've just started looking at TSan and got a deadlock in a single-theaded program. It appears to be stuck in __tsan::user_realloc that is called from strerror_r, which is intercepted after the initial call to "operator new".

Could somebody take a look please? The full stack is attached.

Thanks in advance,
Oleg.

#0  0x00007fb7e4cabae9 in syscall () from /lib64/libc.so.6
#1  0x00007fb7e669f0a3 in __sanitizer::BlockingMutex::Lock (this=this@entry=0x7e0000001680) at libsanitizer/sanitizer_common/sanitizer_linux.cc:529
#2  0x00007fb7e669789b in GenericScopedLock (mu=mu@entry=0x7e0000001680, this=<synthetic pointer>) at libsanitizer/sanitizer_common/sanitizer_mutex.h:83
#3  __sanitizer::SizeClassAllocator64<137438953472000ul, 1099511627776ul, 32ul, __sanitizer::SizeClassMap<17ul, 256ul, 16ul, 28ul>, __sanitizer::NoOpMapUnmapCallback>::PopulateFreeList (
    this=0x7fb7e66d8f80 <__tsan::allocator_placeholder>, stat=0x7fb7e4ba5b20, c=0x7fb7e4b4c590, class_id=40, region=region@entry=0x7e0000001680) at libsanitizer/sanitizer_common/sanitizer_allocator.h:483
#4  0x00007fb7e6697d98 in __sanitizer::SizeClassAllocator64<137438953472000ul, 1099511627776ul, 32ul, __sanitizer::SizeClassMap<17ul, 256ul, 16ul, 28ul>, __sanitizer::NoOpMapUnmapCallback>::AllocateBatch (
    this=this@entry=0x7fb7e66d8f80 <__tsan::allocator_placeholder>, stat=stat@entry=0x7fb7e4ba5b20, c=c@entry=0x7fb7e4b4c590, class_id=class_id@entry=40)
    at libsanitizer/sanitizer_common/sanitizer_allocator.h:335
#5  0x00007fb7e6697e05 in __sanitizer::SizeClassAllocatorLocalCache<__sanitizer::SizeClassAllocator64<137438953472000ul, 1099511627776ul, 32ul, __sanitizer::SizeClassMap<17ul, 256ul, 16ul, 28ul>, __sanitizer::NoOpMapUnmapCallback> >::Refill (this=0x7fb7e4b4c590, allocator=allocator@entry=0x7fb7e66d8f80 <__tsan::allocator_placeholder>, class_id=class_id@entry=40) at libsanitizer/sanitizer_common/sanitizer_allocator.h:829
#6  0x00007fb7e669767c in Allocate (class_id=40, allocator=0x7fb7e66d8f80 <__tsan::allocator_placeholder>, this=0x7fb7e4b4c590) at libsanitizer/sanitizer_common/sanitizer_allocator.h:782
#7  Allocate (cleared=false, alignment=16, size=<optimized out>, cache=0x7fb7e4b4c590, this=0x7fb7e66d8f80 <__tsan::allocator_placeholder>) at libsanitizer/sanitizer_common/sanitizer_allocator.h:1055
#8  __tsan::user_alloc (thr=0x7fb7e4a41740, pc=140427821333821, sz=sz@entry=2048, align=align@entry=16) at libsanitizer/tsan/tsan_mman.cc:67
#9  0x00007fb7e66977bd in __tsan::user_realloc (thr=0x7fb7e4a41740, pc=pc@entry=140427821333821, p=p@entry=0x7d400000f400, sz=sz@entry=2048) at libsanitizer/tsan/tsan_mman.cc:114
#10 0x00007fb7e6683d6a in __interceptor_realloc (p=0x7d400000f400, size=2048) at libsanitizer/tsan/tsan_interceptors.cc:378
#11 0x00007fb7e4bf6811 in read_alias_file () from /lib64/libc.so.6
#12 0x00007fb7e4bf69fe in _nl_expand_alias () from /lib64/libc.so.6
#13 0x00007fb7e4bf51c8 in _nl_find_domain () from /lib64/libc.so.6
#14 0x00007fb7e4bf49b0 in __dcigettext () from /lib64/libc.so.6
#15 0x00007fb7e4c47a38 in strerror_r () from /lib64/libc.so.6
#16 0x00007fb7e4c4793e in strerror () from /lib64/libc.so.6
#17 0x00007fb7e669f6de in __sanitizer::MmapOrDie (size=<optimized out>, size@entry=16384, mem_type=mem_type@entry=0x7fb7e66a2161 "InternalScopedBuffer") at libsanitizer/sanitizer_common/sanitizer_posix.cc:68
#18 0x00007fb7e66a00d3 in InternalScopedBuffer (cnt=16384, this=<synthetic pointer>) at libsanitizer/sanitizer_common/sanitizer_common.h:69
#19 __sanitizer::Report (format=format@entry=0x7fb7e66a5bb0 "ERROR: %s failed to allocate 0x%zx (%zd) bytes at address %p (%d)\n") at libsanitizer/sanitizer_common/sanitizer_printf.cc:202
#20 0x00007fb7e669f379 in __sanitizer::MmapFixedOrDie (fixed_addr=fixed_addr@entry=137782550855680, size=size@entry=131072) at libsanitizer/sanitizer_common/sanitizer_posix.cc:109
#21 0x00007fb7e66979b9 in MapWithCallback (this=0x7fb7e66d8f80 <__tsan::allocator_placeholder>, size=131072, beg=137782550855680) at libsanitizer/sanitizer_common/sanitizer_allocator.h:315
#22 __sanitizer::SizeClassAllocator64<137438953472000ul, 1099511627776ul, 32ul, __sanitizer::SizeClassMap<17ul, 256ul, 16ul, 28ul>, __sanitizer::NoOpMapUnmapCallback>::PopulateFreeList (
    this=0x7fb7e66d8f80 <__tsan::allocator_placeholder>, stat=0x7fb7e4ba5b20, c=0x7fb7e4b4c590, class_id=40, region=region@entry=0x7e0000001680) at libsanitizer/sanitizer_common/sanitizer_allocator.h:498
#23 0x00007fb7e6697d98 in __sanitizer::SizeClassAllocator64<137438953472000ul, 1099511627776ul, 32ul, __sanitizer::SizeClassMap<17ul, 256ul, 16ul, 28ul>, __sanitizer::NoOpMapUnmapCallback>::AllocateBatch (
    this=this@entry=0x7fb7e66d8f80 <__tsan::allocator_placeholder>, stat=stat@entry=0x7fb7e4ba5b20, c=c@entry=0x7fb7e4b4c590, class_id=class_id@entry=40)
    at libsanitizer/sanitizer_common/sanitizer_allocator.h:335
#24 0x00007fb7e6697e05 in __sanitizer::SizeClassAllocatorLocalCache<__sanitizer::SizeClassAllocator64<137438953472000ul, 1099511627776ul, 32ul, __sanitizer::SizeClassMap<17ul, 256ul, 16ul, 28ul>, __sanitizer::NoOpMapUnmapCallback> >::Refill (this=0x7fb7e4b4c590, allocator=allocator@entry=0x7fb7e66d8f80 <__tsan::allocator_placeholder>, class_id=class_id@entry=40) at libsanitizer/sanitizer_common/sanitizer_allocator.h:829
#25 0x00007fb7e669767c in Allocate (class_id=40, allocator=0x7fb7e66d8f80 <__tsan::allocator_placeholder>, this=0x7fb7e4b4c590) at libsanitizer/sanitizer_common/sanitizer_allocator.h:782
#26 Allocate (cleared=false, alignment=16, size=<optimized out>, cache=0x7fb7e4b4c590, this=0x7fb7e66d8f80 <__tsan::allocator_placeholder>) at libsanitizer/sanitizer_common/sanitizer_allocator.h:1055
#27 __tsan::user_alloc (thr=0x7fb7e4a41740, pc=pc@entry=140427821334647, sz=sz@entry=2048, align=align@entry=16) at libsanitizer/tsan/tsan_mman.cc:67
#28 0x00007fb7e66840a6 in operator new (size=2048) at libsanitizer/tsan/tsan_interceptors.cc:421
#29 0x00007fb7e5e1e0ce in boost::re_detail::raw_storage::resize (this=0x7d2e0001f258, n=1296) at libs/regex/build/../src/regex_raw_buffer.cpp:47
#30 0x00007fb7e5e1e1d1 in boost::re_detail::raw_storage::insert (this=0x7d2e0001f258, pos=712, n=312) at libs/regex/build/../src/regex_raw_buffer.cpp:65
#31 0x00007fb7e5de2c1b in boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::insert_state (this=0x7fffc9ea1360, pos=712, t=boost::re_detail::syntax_element_rep, s=312)
    at ./boost/regex/v4/basic_regex_creator.hpp:321
#32 0x00007fb7e5dd09c1 in boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::parse_repeat (this=0x7fffc9ea1360, low=2, high=2) at ./boost/regex/v4/basic_regex_parser.hpp:1012
#33 0x00007fb7e5dd167b in boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::parse_repeat_range (this=0x7fffc9ea1360, isbasic=false) at ./boost/regex/v4/basic_regex_parser.hpp:1162
#34 0x00007fb7e5dc75cb in boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::parse_extended (this=0x7fffc9ea1360) at ./boost/regex/v4/basic_regex_parser.hpp:347
#35 0x00007fb7e5dc7d3b in boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::parse_all (this=0x7fffc9ea1360) at ./boost/regex/v4/basic_regex_parser.hpp:234
#36 0x00007fb7e5dc3f90 in boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::parse (this=0x7fffc9ea1360, p1=0x7fb7e9e6d4a8 "^iqn\\.\\d{4}-\\d{2}\\.[-0-9a-zA-Z:\\.]+$",
    p2=0x7fb7e9e6d4cc "", l_flags=0) at ./boost/regex/v4/basic_regex_parser.hpp:157
#37 0x00007fb7e5dc104b in boost::re_detail::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign (this=0x7d2e0001f0e0,
    arg_first=0x7fb7e9e6d4a8 "^iqn\\.\\d{4}-\\d{2}\\.[-0-9a-zA-Z:\\.]+$", arg_last=0x7fb7e9e6d4cc "", f=0) at ./boost/regex/v4/basic_regex.hpp:215
#38 0x00007fb7e5dbec16 in boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign (this=0x7fffc9ea1610, p1=0x7fb7e9e6d4a8 "^iqn\\.\\d{4}-\\d{2}\\.[-0-9a-zA-Z:\\.]+$", p2=0x7fb7e9e6d4cc "", f=0)
    at ./boost/regex/v4/basic_regex.hpp:661
#39 0x00007fb7e8ad2ebb in boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign (this=0x7fffc9ea1610, p1=0x7fb7e9e6d4a8 "^iqn\\.\\d{4}-\\d{2}\\.[-0-9a-zA-Z:\\.]+$", p2=0x7fb7e9e6d4cc "", f=0)
    at usr/include/boost/regex/v4/basic_regex.hpp:382
#40 0x00007fb7e8ad1788 in boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign (this=0x7fffc9ea1610, p=0x7fb7e9e6d4a8 "^iqn\\.\\d{4}-\\d{2}\\.[-0-9a-zA-Z:\\.]+$", f=0)
    at usr/include/boost/regex/v4/basic_regex.hpp:367
#41 0x00007fb7e8ad1e48 in boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::basic_regex (this=0x7fffc9ea1610, p=0x7fb7e9e6d4a8 "^iqn\\.\\d{4}-\\d{2}\\.[-0-9a-zA-Z:\\.]+$", f=0)
    at usr/include/boost/regex/v4/basic_regex.hpp:336
#42 0x00007fb7e908f3f6 in iscsi::BasicPDU::check_name ()
#43 0x00007fb7e90856af in iscsi::initiator::Initiator::add ()
#44 0x00007fb7e908eb38 in iscsi::initiator::Initiator::parse_config ()
#45 0x00007fb7e906bb13 in IscsiInitIntf::parse_config ()
#46 0x00007fb7e8abaa71 in parse_config ()
#47 0x00007fb7e8abca29 in main (argc=3, argv=0x7fffc9ea42e8) at main.cc:745

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux