Though apparently undocumented on FreeBSD, their implementation of shm_open differs from others in the following way: all names for shared memory blocks *must* begin with a slash. This requirement does not exist on OpenBSD.
According to its man page on shm_open, FreeBSD does at least communicate the following non-standard, additional requirement:
Two processes opening the same path
are guaranteed to access the same shared memory object if and only if
path begins with a slash (`/') character.
Given that this requirement is not universal and because a leading slash controls other behaviors on platforms like Windows, it would be confusing to make a leading slash a universal requirement.
Likewise, requiring users on FreeBSD to be aware of this nuance would be contrary to the goals of the SharedMemory class.
I will prepare a patch to prepend a leading slash onto the requested shared memory block name and detect the need for it.
I have verified that this does solve the problem on FreeBSD and that all tests then pass. I will test NetBSD and DragonflyBSD to see if they also impose FreeBSD's undocumented requirement. |