GPRS_C_SDK
GPRS_C_SDK copied to clipboard
Detected XCPU in the GDB loop (0x9db00000)
1. SDK version(SDK 版本)
{ V2.107 }
2. In what kind of operation problems appear, and how to reproduce the problem ?(什么样的操作步骤问题会出现,是否是稳定复现,如何复现问题?)
{ Unsure:
I suspect the cause might be the use of Trace
, memcpy
, memset
or strcmp
in the function(handle_response
) triggered after the API_EVENT_ID_SOCKET_RECEIVED
event. i.e:
...
void handle_response(char *response, double lat, double lng) {
// uses `Trace`, `memcpy`, `memset` and `strcmp`
}
...
void EventDispatch(API_Event_t* pEvent) {
...
case API_EVENT_ID_SOCKET_RECEIVED:
...
handle_response(myBuffer, latVal, lngVal);
...
}
...
Ruby Script Output
Detected event: 0x820c4c88.
Detected event: 0x820c4db4.
Assert received!! Reading detail...
ASSERT DETAIL :
##############################################
# FATAL assert
# --> Active Job = 184
# --> Old Job = 0x8209c2c4
# --> New Job = 0x8209c2b8
##############################################
Detected BCPU in the GDB loop (0x9db10000), connect GDB debugger for more info.
Detected XCPU in the GDB loop (0x9db00000), connect GDB debugger for more info.
gdb info
(gdb) bt f
#0 0x8200deb1 in sxs_Raise ()
No symbol table info available.
#1 0x00000000 in ?? ()
No symbol table info available.
I have stripped out major of the code that I thought was causing the problem. The only C-library function in use now in the aforementioned handle_response
function is strstr
. I still get the same error.
Another similar error (GDB output):
(gdb) bt f
#0 0x81c0741b in _sxr_HFree ()
No symbol table info available.
#1 0x8200e4f3 in sxr_FreeJob ()
No symbol table info available.
Backtrace stopped: frame did not save the PC
please dump longer logs in pastebin!
@punee995 Thanks. I was unaware of its existence. Also, I am unsure if the information I am providing is adequate to get the issue resolved. Feel free to request for and instruct on how to obtain more information.
Different backtrace after re-flashing:
(gdb) bt f
#0 0x8200deb1 in sxs_Raise ()
No symbol table info available.
#1 0x81c07385 in _sxr_HFree ()
No symbol table info available.
#2 0x881406f9 in l1a_MonitorReq ()
No symbol table info available.
#3 0x88097e4b in l1s_CchControlJob ()
No symbol table info available.
#4 0x88097d21 in l1s_RxCbchJob ()
No symbol table info available.
#5 0xfdfdfdfd in ?? ()
No symbol table info available.
I have been trying to narrow down the possible causes of this error. Currently, I think it is being caused by multiple write
s to the socket
. I have different programs achieving the same task of obtaining data from a server and after a few running iterations, this error pops after Line 206
It means we can not use Socket_TcpipWrite twice to write data to the socket server in one process? how can we write several char variables to the socket server? I have also confusing about this issue.
我重新烧录较大的lod文件可以顺利解决这个问题
alguien pudo solucionarlo?
I fixed this by flashing the Factory AT command binary from https://docs.ai-thinker.com/en/gprs/firmware
with this tool https://docs.ai-thinker.com/_media/gprs/ai-thinker_a9_a9g_at_v02.02.20190915r.rar
Thanks to @lamqhoang for the solution.