Using AMP in Rtems 4.10, issues using global message queues

Diego Mercado diego.mercs at
Thu Dec 13 12:31:38 UTC 2018

I am using AMP in Rtems 4.10 and using message queues to share data
between nodes. I had no problems using queues until I add a task that
make several rtems_message_queue_receive, after a while the node that
receives from the queue crashes (using the debugger I saw it crashed
in: "rtems_mpci_entry Shm_Get_packet()"). No issues when receiving
messages if I set the "no wait" option:
rtems_message_queue_receive(rtemsId, data, size, RTEMS_NO_WAIT, 0);
But if I set a wait, for example, of 1 second:
rtems_message_queue_receive(rtemsId, data, size, RTEMS_WAIT, 100);
then the node that is blocked in the queue reception stop running
after several calls to rtems_message_queue_receive. With a shared
memory area of 0x1000 bytes rtems_message_queue_receive can be called
9 times and the next time it stops. With 0x2000 bytes: 19 calls and it
crash with the following one. With 0x3000 bytes: 29 calls and then it
stops. It seems that the shared memory area is filled?

I do not see any errors, program just stop running (the other node
runs correctly).
For local queues we have no problems.
Do you have any idea why this is happening?

thanks in advance

/* Override default SHM configuration */
shm_config_table BSP_shm_cfgtbl =
{ .base = (void *) 0x40000000, .length = 0x1000 };

More information about the users mailing list