Hello,
I am having a problem using MSGQ.
My simple application, based on the MESSAGE sample code, uses the following configuration:
- 1 MSGQ (A) created by ARM (Messages are sent by DSP)
- 1 MSGQ (B) created by DSP (Messages are sent by ARM)
- All MSGQs are using the same POOL, which is configured as follows:
- 50 buffers of size 128 (used with MSGQ A)
- 4 buffers of size ZCPYMQT_CTRLMSG_SIZE
- 40 buffers of size 2688 (used with MSGQ B)
When both ARM and DSP are sending buffers in a high rate, a "NULL pointer dereference" error occurs after several seconds:
Assertion failed (addr != NULL) File: .../gpp/src/ldrv/POOLS/ldrv_pool.c Line: 1045
Unable to handle kernel NULL pointer dereference at virtual address 00000004
There are two workarounds I tried which eliminate this error:
1. Change the MSGQ A buffers size to 2688 (like B) or greater.
2. Define another POOL: one for MSGQ A and one for MSGQ B.
Both workarounds vanish the bug, but the source of the main problem is still unknown to me.
Any advice will help!
Thanks in advance