Part Number: TDA4VM
[background]
The Question is related with TIOVX and shared memory allocator.
We have got an issue which is hard to reproduce (<5%): the pipeline of surround camera view has encountered a memory failure, which resulted in a black screen issue from vehicle market. details:
From app log, we can see the return value was(-8)VX_ERROR_NO_MEMORY) when TIOVX API vxVerifyGraph was called but no any other available log(vx_print of TIOVX has been disabled)
The internal process of vxVerifyGraph mainly apply necessary shared memory for pipelining.
But no any error slog, just some initiated log like:
"Jan 01 08:00:00.212 shmemallocator.73741 SharedMemoryAllocator: BaseAddress: 0xb8000000 Size: 0x2a000000 (704643072)"
[question]
If no error log from SharedMemoryAllocator, does it mean the issue is not related with shared memory? details:
We have checked the source code of SharedMemoryAllocator,
int SHM_alloc(int size, shm_buf *buf)
{
....
ioctl (shmHandler, CMD_SHMALLOCATOR_ALLOC, &cmdArgs); ---->①
status = cmdArgs.apiStatus;
if (status < 0) {
slogf (42, _SLOG_DEBUG1, "\nSHM_alloc: IOCTL Failed \n"); ---->②
deinitSHMHandler(shmHandler);
return status;
}
else {
buf->phy_addr = cmdArgs.result.phy_addr;
buf->vir_addr = cmdArgs.result.vir_addr; ---->③
buf->blockID = cmdArgs.result.blockID;
buf->size = cmdArgs.result.size;
buf->pid = getpid();
}
}
please referece mark①②: the return value of ioctl has not been checked but using apiStatus.
Q1. if ioctl returns abnormal value, how about the value of cmdArgs? Dose it means phy_addr/ vir_addr are NULL but no logging.
Is the case possible or would never happen?
please referece mark③
Q2. if ① is ok(apiStatus=0), there might be another case: phy_addr is valid but vir_addr is NULL.
If it happens, whether other abnormal log of virtual mapping MUST be output or not?
