Hi,
I am using the NDK version 2.26.0.08 and PDK 1.0.10 to run a UDP server application on an AM3357 device. Everything works fine, but sometimes and randomly I get a Data abort exception.
Exception call stack,
0 PBM_free(void *) at pbm.c:230,PC = 0x80040D78 FP = 0x00020002
1 xdc_runtime_System_asprintf_va__E() at :0,PC = 0x00030002 FP = 0x00020002
2 do_AngelSWI(int, void *) at _kill.c:78,PC = 0x8005F308 FP = 0x00020002
3 _kill(int, int) at _kill.c:19,PC = 0x8005F308 FP = 0x00020002
Using RTOS object view, the preempted task is the main NDK task. This task is configured:
CI_IPNET NA; CI_ROUTE RT; /* Add IP address for interface 1 */ NA.IPAddr = htonl(tInst.u32IpAddr); NA.IPMask = htonl(tInst.u32NetMask); CfgAddEntry(hCfg, CFGTAG_IPNET, 1, 0, sizeof(CI_IPNET), (UINT8 *)&NA, 0); uint cfg; /* Set NDK Kernel Task Priority */ cfg = 11; CfgAddEntry(hCfg, CFGTAG_OS, CFGITEM_OS_TASKPRIKERN, CFG_ADDMODE_UNIQUE, sizeof(uint), (uint8_t*)&cfg, 0); /** Set NDK Kernel Task stack size */ cfg = 0x4000; CfgAddEntry(hCfg, CFGTAG_OS, CFGITEM_OS_TASKSTKLOW, CFG_ADDMODE_UNIQUE, sizeof(uint), (uint8_t*)&cfg, 0);
I also check the stack peak and it is 1164 (no stack overflow).
When the exception appears, if I try to read the status of the NDK on the ROV:
Target memory read failed at address: 0xffffffffffffffff, length: 4
This read is at an INVALID address according to the application's section map. The application is likely either uninitialized or corrupt.
How I could get more information? and what could cause the Data Abort on the main NDK task?
Any recommendation is appreciated.
Josep