An issue was seen with a MME user application where an error was
returned (errno = 16 or EBUSY) on a call to mme_get_event(). Debugging
seemed to indicate that the expected messages that should be delivered
at that time in the code were being lost.
The issue eventually identified was that the mme_hdl_t returned
from mme_connect() and used as one of the function arguments was being
used in more than one thread without any locking, occasionally resulting
in simultaneous access. This was the root problem as documented in the
mme_connect() function description:
---
Connections are not thread safe, so the client application must
ensure that a connection handle isn't used by more than one thread at a
time.
---
The solution was to make sure that separate threads were using their own connection handles to the MME to prevent any conflicts.
NOTE:
This entry has been validated against the SDP version listed above. Use
caution when considering this advice for any other SDP version. For
supported releases, please reach out to QNX Technical Support if you have any questions/concerns.