Hi Ravi - the code isn't simple and I can't see anything obvious.
I would recommend using assert(). Eg. if array dataDchUl->data.elem[] is size X
and array dataDchUl->data.elem[].tbs.tbs.elem[] is size Y, then:
assert(dataDchUl);
assert(dchAmount < X);
for (i = 0; i < dchAmount; i++)
{
assert(dataDchUl->data.elem[i].tbs.tbnr < Y);
for (j = 0; j < dataDchUl->data.elem[i].tbs.tbnr; j++)
:
In other words, look for all the places in the code where the crash might
happen, and add an assert to check whether the assumption the code makes (eg.
pointer not NULL, valid array index) is true.
BTW is this WCDMA?