Hi,
I was analyzing a core dump and then narrow down the problem that there is
a bug in C function. Then I thought lets have a contest who find the bug
first.
So here are the code details
if (ueInfo) {
/* Remove ueInfo from RACH-Access queue */
if (ueInfo->campedCell) {
int rachQIndex = 0;
waitRachTxQueue_t *rachTxQueue = &ueInfo->campedCell->waitRachTxQueue;
while (rachQIndex < rachTxQueue->n) {
if (rachTxQueue->queue[(rachQIndex + rachTxQueue->start) %
(petMaxUEInstancePerProcess+1)]->uEID == cellUncampUEReq->uEID) {
int delIndex;
for (delIndex = rachQIndex; delIndex < rachTxQueue->n; delIndex++) {
rachTxQueue->queue[(delIndex + rachTxQueue->start) %
(petMaxUEInstancePerProcess+1)]
= rachTxQueue->queue[(delIndex + rachTxQueue->start + 1) %
(petMaxUEInstancePerProcess+1)];
}
rachTxQueue->n--;
infoPrint (vtask, INFO_LEVEL1, "handleCellUncampUEReq: UE removed from
rachTxQueue (uEID(%d) uCID(%d) rachTxQueue->n(%d)",
cellUncampUEReq->uEID, cellUncampUEReq->uCID, rachTxQueue->n);
}
rachQIndex++;
}
}
ueInfo->campedCell = NULL;
if (ueInfo->rlList.n == 0) {
VARIABLE_STR *var = (VARIABLE_STR*) vtask->var;
aaDelete (var->ueIDToUeInfoH, (char*) &cellUncampUEReq->uEID);
var->procInstToUeInfo[ueInfo->cetlAddrUPlane.processInstance][ueInfo->cetlAddrUPlane.serviceInstance]
= NULL;
infoPrint (vtask, INFO_LEVEL1, "handleCellUncampUEReq: wfree ueInfo from
ueIdToUeInfoH uEID(%d) ueInfo(0x%x)",
cellUncampUEReq->uEID, ueInfo);
wfree (ueInfo);
}
Ravi
[Non-text portions of this message have been removed]