В моем приложении, которое развернуто на vxWorks, генерируется следующее backtrace (сгенерированное из файла xrtc):
d475c (Frame 1) process_host_invoke+274: d3bac (ffffff00, 3e8)
d3cac (Frame 2) stop_feature_monitor+904: receive_invoke_reply ()
d0318 (Frame 3) receive_invoke_reply+7c : wait_reply_msg (3e8, 7950818, ffffff00)
cc6a4 (Frame 4) wait_reply_msg+98 : semTake (ffffff00, 3e8)
859690 (Frame 5) semTake +28 : vxWorks_semTake (ffffff00, 3e8)
Ниже приведен прототип методов, вызванных выше:
void process_host_invoke(X *param);
int wait_reply_msg(uchar **msg,int* size,int wait_tick );
STATUS semTake(
SEM_ID semId, /* semaphore ID to take */
int timeout /* timeout in ticks */
);
Возможно ли, что аргумент типа uchar ** msg из кадра 3 передается в кадр 5 в качестве аргумента, даже если типы данных различаются.
Я новичок в vxWorks среда.Возможно ли, что аргументы функции передаются неправильно в стеке.
FFFFFF00 (H) -> 4 294 967 040, это значение передается как SEM_ID в semTake. Я получил S_objLib_OBJ_ID_ERROR при вызове semTake.
PS: я неесть файл дампа