What causes this error: "NDDS_Transport_Shmem_attach_writer:incompatible shared memory segment found."

Note: Applies to RTI Connext 4.x and above.

When you have multiple applications running on a single machine utilizing the shared memory transport this error will occur of when the shared memory transport property

dds.transport.shmem.builtin.parent.message_size_max is not consistent across all RTI Connext applications on the same host. The actual error will be as follows:

NDDS_Transport_Shmem_attach_writer:incompatible shared memory segment found.    Found segment with max message size 9216.  Needed 12345.

The error is saying that your application has its shared memory transport property message_size_max set to 12345. A writer is trying to communicate with a remote shared memory reader whose shared memory transport property message_size_max is set to 9216 (the default). This error can be resolved by making this property consistant across all your applications on the same host. 

Comments

Note that RTI tools (Analyzer, Monitor, etc.) have their own QoS profile that will also need to be modified if the user changes the shared memory settings in their application.