I am using NDK 2.24.00.11 with C6455 ethernet driver.
I created a SOCK_STREAM server socket with IPPROTO_TCP on the C6455 DSP, and I have a client socket created on a different Host microprocessor.
Host microprocessor socket sends the data to the DSP, and intermittently DSP recv() function returns 0.
I found out that somehow the following code in the NDK's pbm.c PBM_free() function got executed by the previous recv() function.
if(!pPkt || (pPkt->Type != PBM_MAGIC_POOL && pPkt->Type != PBM_MAGIC_ALLOC)) { DbgPrintf(DBG_ERROR, "PBM_free: Invalid Packet"); return; }
And sometimes the following code in the NDK's pbm.c PBMQ_enq() function got executed by the previous recv() function.
if( pPkt->Type != PBM_MAGIC_POOL && pPkt->Type != PBM_MAGIC_ALLOC ) { DbgPrintf(DBG_ERROR, "PBM_enq: Invalid Packet"); return; }
Since debug flag is DBG_ERROR, DbgPrintf() will call NC_NetStop(), which will stop the NetScheduler.
What could cause this? Do you have any suggestion what to check?