-
Notifications
You must be signed in to change notification settings - Fork 93
Open
Description
I'm trying to figure out a crash dump that I got when initiating a boost implementation of unix domain socket.
What's strange about it is that the relevant frame is when it parsed the ec.what() which is a function that basically create a string message ...
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 P 0x104919660 boost::system::error_code::what() const (in P_arm64.dsym) + 528 + 251488
1 P 0x104919654 boost::system::error_code::what() const (in P_arm64.dsym) + 516 + 251476
2 P 0x104918ea8 boost::system::system_error::system_error(boost::system::error_code const&, char const*) (in P_arm64.dsym) + 308 + 249512
3 P 0x104adbd10 boost::asio::basic_socket<boost::asio::local::stream_protocol, boost::asio::any_io_exec
utor>::connect(boost::asio::local::basic_endpoint<boost::asio::local::stream_protocol> const&) (in P_arm64.dsym) + 1808 + 2096400
(--> this is my c'tor that initiate the unix domain socket)
4 P 0x104ad9ed4 service::api::Instance(std::__1::function<void (std::__1::
Besides the callstack, I could generate a crash file with a crash reason
Termination Reason: Namespace SIGNAL, Code 10 Bus error: 10
Terminating Process: exc handler [2253]
VM Region Info: 0x107008fa8 is in 0x107006000-0x10705e000; bytes after start: 12200 bytes before end: 348247
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
__TEXT 10664e000-107006000 [ 9952K] r-x/r-x SM=COW ...s/MacOS/P
---> __DATA_CONST 107006000-10705e000 [ 352K] r--/rw- SM=COW ...s/MacOS/P
__DATA 10705e000-107072000 [ 80K] rw-/rw- SM=COW ...s/MacOS/P
So It seems like when the ec message is created, we attempt to write a read only memory (DATA_CONST) . I think that this is the problematic code :
source_location const & location() const BOOST_NOEXCEPT
{
BOOST_STATIC_CONSTEXPR source_location loc;
return lc_flags_ >= 4? *reinterpret_cast<source_location const*>( lc_flags_ &~ static_cast<boost::uintptr_t>( 1 ) ): loc;
}
which is called from here
std::string what() const
{
std::string r = message();
r += " [";
r += to_string();
if( has_location() )
{
r += " at ";
--> r += location().to_string();
}
r += "]";
return r;
}
However, i don't understand where do we attempt to write to the const expression 'loc'... any idea what may be the reason ?
zajo and iradization
Metadata
Metadata
Assignees
Labels
No labels