What does this Exclusive Area error message mean?

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

RTI Connext uses the concept of exclusive areas (EA) to avoid deadlocks when user listener code calls the RTI Connext APIs. 

In a nutshell: 

  • Each entity has their own EAs. 
  • Controlling access into EAs is a way to prevent deadlocking situations. 
  • The rule of thumb is: do not access lower EAs.

There are three ordered levels of Exclusive Areas: 

  • ParticipantEA: There is one per Participant. 
  • SubscriberEA: There is one per Subscriber. DataReaders created by a Subscriber share the EA of its parent. 
  • PublisherEA: There is one per Publisher. DataWriters created by a Publisher share the EA of its parent. 

The three EA levels are ordered in the following manner:

 ParticipantEA < SubscriberEA < PublisherEA

If a thread is in an EA, it can call methods associated with either a higher EA level or methods that share the same EA. It cannot call methods associated with a lower EA level, nor can it call methods that use a different EA at the same level. 

The following error message indicates that the application is trying to access a lower exclusive area (EA) from a higher EA:

DDS_Entity_check_callback_infoI:illegal operation due to exclusive area&nbsp;

For example, the message may indicate that an application is trying to access a Subscriber from a Publisher's listener callback, or that a DataWriter's callback is trying to access a DataReader. 

See the Core Libraries and Utilities User's Manual ("Entities" chapter) for more details on exclusive areas.