Opened 7 years ago
#11523 new Bugs
Interprocess communication between x86 and x64 issue
Reported by: | Owned by: | Ion Gaztañaga | |
---|---|---|---|
Milestone: | To Be Determined | Component: | interprocess |
Version: | Boost 1.58.0 | Severity: | Problem |
Keywords: | ipc, platform, lock, windows | Cc: |
Description
My code below is a very simple example, that should work to communicate between x86 and x64. But it doesn't...
If I create it in x64 and open in win32, the win32 process stuck at a lock at
function try_based_lock in boost/int/sync/detail/common_algorithms.hpp
In the other way around: win32 create, x64 open: the x64 process crashes at
name_length in segment_manager_helper.hpp
while trying to find the name from an index (priv_generic_find in segment_manager.hxx
).
#include <iostream> #include <boost/interprocess/managed_shared_memory.hpp> int main() { namespace bip = boost::interprocess; // open in WIN32, create in x64 #ifdef _WIN32 bip::managed_shared_memory msm(bip::open_only, "TestIPC"); #elsif X64 bip::shared_memory_object::remove("TestIPC"); bip::managed_shared_memory msm(bip::create_only, "TestIPC", 4096); msm.construct<uint32_t>("Data")[1](10); #endif // Get Data and print it auto data = msm.find<uint32_t>("Data"); if (data.second == 1) { std::cout << *data.first << std::endl; } std::cin.ignore(); return 0; }
I am using Windows 7 and VC12.
Note:
See TracTickets
for help on using tickets.