Platform: Mac OS,. 10.15 & Mac OS 11.x ( arm64)
Compiler: AppleClang 12.0.0.12000032
Mac OSX SDK: 11
I link libprotouf.a to my shared libary (dylib). The dylib is compiled 
using -fsanitize=thread -O1 but protobuf is compiled as normal ( without 
any sanitizer flags )
When i run in thread sanitizer, i get SEGV and here is a sample callstack

[2024-08-13T17:26:21.490Z] ThreadSanitizer:DEADLYSIGNAL 
[2024-08-13T17:26:21.490Z] ==1855==ERROR: ThreadSanitizer: SEGV on unknown 
address 0x000000000000 (pc 0x0001021e9840 bp 0x7e8000186920 sp 
0x7e8000186900 T2629743) [2024-08-13T17:26:21.490Z] ==1855==The signal is 
caused by a READ memory access. [2024-08-13T17:26:21.490Z] ==1855==Hint: 
address points to the zero page.
...
...

 #0 
google::protobuf::internal::UntypedMapBase::TableEntryIsNonEmptyList(unsigned 
int) const map.h:630 (mySample.9.1.2.17.dylib:x86_64+0xe7840)

[2024-08-13T17:26:23.250Z]     #1 
google::protobuf::internal::KeyMapBase<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > 
>::FindHelper(absl::lts_20240116::string_view, 
absl::lts_20240116::container_internal::btree_iterator<absl::lts_20240116::container_internal::btree_node<absl::lts_20240116::container_internal::map_params<google::protobuf::internal::VariantKey,
 
google::protobuf::internal::NodeBase*, 
std::__1::less<google::protobuf::internal::VariantKey>, 
google::protobuf::internal::MapAllocator<std::__1::pair<google::protobuf::internal::VariantKey
 
const, google::protobuf::internal::NodeBase*> >, 256, false> >, 
std::__1::pair<google::protobuf::internal::VariantKey const, 
google::protobuf::internal::NodeBase*>&, 
std::__1::pair<google::protobuf::internal::VariantKey const, 
google::protobuf::internal::NodeBase*>*>*) const map.h:953 
(mySample.9.1.2.17.dylib:x86_64+0xe7594)

[2024-08-13T17:26:23.251Z]     #2 
std::__1::pair<google::protobuf::Map<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >::iterator, bool> 
google::protobuf::Map<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > 
>::TryEmplaceInternal<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > const, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >(std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > const&&, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> >&&) map.h:1619 
(mySample.9.1.2.17.dylib:x86_64+0xea059)

[2024-08-13T17:26:23.251Z]     #3 
std::__1::pair<google::protobuf::Map<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >::iterator, bool> 
google::protobuf::Map<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > 
>::ArenaAwareTryEmplace<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > const, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >(std::__1::integral_constant<bool, false>, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const&&, std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >&&) map.h:1692 
(mySample.9.1.2.17.dylib:x86_64+0xe9f25)

[2024-08-13T17:26:23.251Z]     #4 
std::__1::pair<google::protobuf::Map<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >::iterator, bool> 
google::protobuf::Map<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >::try_emplace<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > const, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >(std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > const&&, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> >&&) map.h:1466 
(mySample.9.1.2.17.dylib:x86_64+0xe9e35)

[2024-08-13T17:26:23.252Z]     #5 
std::__1::pair<google::protobuf::Map<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >::iterator, bool> 
google::protobuf::Map<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> >, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > 
>::insert<std::__1::pair<std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > const, 
std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > >, 
0>(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, 
std::__1::allocator<char> > const, std::__1::basic_string<char, 
std::__1::char_traits<char>, std::__1::allocator<char> > >&&) map.h:1476 
(mySample.9.1.2.17.dylib:x86_64+0xb5643)

….

….

…

…


2024-08-13T17:26:23.253Z]     #18 MySDK::CMySDKSocket::TestMonitorThread() 
MySDKSocket.cpp:191 (mySample.9.1.2.17.dylib:x86_64+0x1a0b5f)

[2024-08-13T17:26:23.253Z]     #19 
decltype(*(std::__1::forward<MySDK::CMySDKSocket*>(fp0)).*fp()) 
std::__1::__invoke<void (MySDK::CMySDKSocket::*)(), MySDK::CMySDKSocket*, 
void>(void (MySDK::CMySDKSocket::*&&)(), MySDK::CMySDKSocket*&&) 
type_traits:3486 (mySample.9.1.2.17.dylib:x86_64+0x1ac338)

[2024-08-13T17:26:23.253Z]     #20 void 
std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, 
std::__1::default_delete<std::__1::__thread_struct> >, void 
(MySDK::CMySDKSocket::*)(), MySDK::CMySDKSocket*, 
2ul>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, 
std::__1::default_delete<std::__1::__thread_struct> >, void 
(MySDK::CMySDKSocket::*)(), MySDK::CMySDKSocket*>&, 
std::__1::__tuple_indices<2ul>) thread:273 
(mySample.9.1.2.17.dylib:x86_64+0x1ac122)

[2024-08-13T17:26:23.254Z]     #21 void* 
std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct,
 
std::__1::default_delete<std::__1::__thread_struct> >, void 
(MySDK::CMySDKSocket::*)(), MySDK::CMySDKSocket*> >(void*) thread:284 
(mySample.9.1.2.17.dylib:x86_64+0x1ab37b)

[2024-08-13T17:26:23.254Z]     #22 __tsan_thread_start_func <null>:3 
(libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2d89b)

[2024-08-13T17:26:23.254Z] waitForEchoResponse: 19

    #23 _pthread_start <null>:2 (libsystem_pthread.dylib:x86_64+0x6108)

[2024-08-13T17:26:23.254Z]     #24 thread_start <null>:2 
(libsystem_pthread.dylib:x86_64+0x1b8a)

[2024-08-13T17:26:23.254Z] 

[2024-08-13T17:26:23.254Z] ==1855==Register values:

[2024-08-13T17:26:23.254Z] rax = 0x000003ffffffffff  rbx = 
0x0000000000000000  rcx = 0x0000000003390000  rdx = 0x0000600003390000  

[2024-08-13T17:26:23.254Z] rdi = 0x0000000105730000  rsi = 
0x00000001021e9840  rbp = 0x00007e8000186920  rsp = 0x00007e8000186900  

[2024-08-13T17:26:23.254Z]  r8 = 0x0000000000000000   r9 = 
0x0000000000000000  r10 = 0x0000000000000000  r11 = 0x0000000000000000  

[2024-08-13T17:26:23.254Z] r12 = 0x00007b3400006830  r13 = 
0x00007e8000186ab8  r14 = 0x0000000000000000  r15 = 0x0000000000000000  

[2024-08-13T17:26:23.254Z] ThreadSanitizer can not provide additional info.

[2024-08-13T17:26:23.254Z] SUMMARY: ThreadSanitizer: SEGV map.h:630 in 
google::protobuf::internal::UntypedMapBase::TableEntryIsNonEmptyList(unsigned 
int) const

[2024-08-13T17:26:23.254Z] ==1855==ABORTING
What could be causing this issue? we never had this issue with our previous 
protobuf version compiled the same way 3.21.12 using the same clang 
compiler version as universal binary. Any advise? 

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/bcc31496-50bd-419d-bdd7-cac894796cfbn%40googlegroups.com.

Reply via email to