Modify

Ticket #4251 (closed Bugs: fixed)

Opened 4 years ago

Last modified 3 years ago

Interprocess failed to communicate in OS X 10.5.8 Leopard under 64 bit mode

Reported by: Chih-Yao Hsieh <josephsieh@…> Owned by: igaztanaga
Milestone: Boost 1.43.0 Component: interprocess
Version: Boost 1.44.0 Severity: Problem
Keywords: Cc:

Description

This issue only exists explicitly for OSX leopard 64 bits application trying to use IPC.

Windows 32/64 bits, XP, Vista, Win 7 has no issue and OSX 10.4: 32 bits, 10.5: 32 bits, 10.6: 32/64 bits all works fine.

The issue is due to "inline void get_bootstamp(std::string &s, bool add = false)" function.

When a 64 bits host application create the shared_memory_object, there will be a folder somewhat like "33FABFC2B8FACA0133FABFC2B8FACA01" being created in the boost_interprocess directory. When the 64 bits client application trying to open the created shared_memory_object, the "get_bootstamp(std::string &s, bool add = false)" function will return "33FABFC2B8FACA010000000000000000", therefore, the client will always failed to find the shared memory object.

Attachments

Change History

comment:1 Changed 3 years ago by igaztanaga

  • Status changed from new to closed
  • Resolution set to fixed

Disabled bootstamp in Boost 1.47. This means that shared memory/queues will go to /tmp if it exists. If /tmp is not cleared on reboot shared memory will survive to reboots, but this behaviour is allowed by POSIX. Using bootstamps to detect reboots is doing more harm than good.

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.