Open r0ck3r008 opened 2 years ago
Hi, boost interprocess anonymous mutex seems not to be handling well in ARM64 of Apple Silicon.
#include <iostream> #include <boost/interprocess/managed_shared_memory.hpp> #include <boost/interprocess/sync/interprocess_mutex.hpp> using namespace boost::interprocess; int main() { try{ managed_shared_memory managed_shm{open_or_create, "shm", 1024}; interprocess_mutex *mtx = managed_shm.find_or_construct<interprocess_mutex>("mtx")(); mtx->lock(); std::cout << "Critial section" << std::endl; mtx->unlock(); } catch (const boost::interprocess::interprocess_exception &e) { std::cerr << "Interprocess exception thrown: " << e.what() << std::endl; _exit(1); } }
Compilation steps followed
clang++ -std=c++17 -arch arm64 boost_interprocess.cpp -I<BOOST_HOME> -o boost_interprocess_arm64 # For arm64 only build clang++ -std=c++17 -arch x86_64 boost_interprocess.cpp -I<BOOST_HOME> -o boost_interprocess_x64 # For x64 only build
Expected Behavior Both the instantiations should work and print Critical Section.
What was observed When arm64 build is executed first, it works fine, but when x64 build is executed, the subsequent arm64 execution hangs.
Steps to reproduce
rm /tmp/boost_interprocess/shm
./boost_interprocess_x64
./boost_interprocess_arm64
Environment tested on
I don't have access to a Mac, so I would need some debugging and help from your side.
@igaztanaga sure let me know how I can help.
Hi, boost interprocess anonymous mutex seems not to be handling well in ARM64 of Apple Silicon.
Compilation steps followed
Expected Behavior Both the instantiations should work and print Critical Section.
What was observed When arm64 build is executed first, it works fine, but when x64 build is executed, the subsequent arm64 execution hangs.
Steps to reproduce
rm /tmp/boost_interprocess/shm
./boost_interprocess_x64
./boost_interprocess_arm64
Environment tested on