This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C66x MPEG2 decoder corrupts memory

Hello,

We are using C66x MPEG2 decoder version 02.02.01.08

I am running  application on DSPC-8681E. Some time ago we started to experience random crashes in the DSP application. It was clear that the crashes appear due to memory corruption of internal structures (SYS/BIOS heaps, our internal structures, etc.). After week of investigation the reason was found. It is in MPEG2 decoder.

Consider the following code snippet:

XDM_BufDesc *outDecoderBufferDescriptor = BufferDescriptorManager_getUnusedBufferDescriptor(decoderBufferManager, inDecoderArguments->inputID);

....

if (BufferDescriptorManager_isCorrupted(decoderBufferManager)) {
    puts("[1] BufferDescriptorManager corrupted");
    fflush(stdout);
}

result = decoderFunctions->process(decoderHandle, &inDecoderBufferDescriptor, outDecoderBufferDescriptor, inDecoderArguments, outDecoderArguments);

if (BufferDescriptorManager_isCorrupted(decoderBufferManager)) {
    puts("[2] BufferDescriptorManager corrupted");
    fflush(stdout);
}

Randomly after processing few hundreds of frames we got corruption error message right after process call:

Corrupted bufSizes
[2] BufferDescriptorManager corrupted

We found that decoder corrupts reusable XDM_BufDesc structures that we store in DDR3 memory within Buffer Manager component. BufferDescriptorManager_isCorrupted do the check of all XDM_BufDesc and reports about found inconsistencies.

Can you please help to resolve the issue.

Regards,

Andrey Lisnevich