저는 vxWorks 6.3을 실행 중이며 문제가 있습니다. RTP처럼 일련의 작업을 실행하고 있습니다. 나는 일을 만들고, 그런 다음 일을 파괴한다. 그런 다음 아주 가까이서 두 가지 작업을 만들고 물건을 만들어 파괴하십시오. 이러한 작업은 malloc 및 무료 메모리와 같은 미친 작업을 수행해야합니다. 불행히도이 작업을 충분히 수행하면 작업 중 하나가 세마포어의 메모리 (malloc 및 free 모두) 루틴에 걸리게됩니다. 그것은 항상 자유 또는 malloc에서 작업의 맨 처음에 "잃어 버리게"되는 두 번째 작업입니다. 실패한 후에도 작업을 생성 할 수 있으며 여전히 malloc 메모리를 사용할 수 있습니다. 실패한 작업은 세마포를 기다리고 영원히 기다리고 있습니다 ... 다른 작업이 반드시 사용해야하는 세마포어.VxWorks가 메모리 루틴에 걸렸습니다.
누구든지 작업이 메모리 루틴에 걸리는 방식을 알고 있습니까?
0x08265e58 malloc +0x2c : 0x082416f4()
0x08267e50 memPartAlloc +0x28 : 0x08241734()
0x08267e0c memPartAlignedAlloc+0x70 : 0x08267c04()
0x08267c7c memPartFree +0xfc : 0x08240654()
0x082753c0 semTake +0x90 : 0x08242534()
0x082752ec semUMTake +0xd8 : 0x08242514()
---- system call boundary ----
-> tw 0x69d21b0
NAME ENTRY TID STATUS DELAY OBJ_TYPE OBJ_ID OBJ_NAME
---------- ---------- ---------- ---------- ----- ---------- ---------- --------
tHttp631-2 0x827dbfc 0x69d21b0 PEND 0 SEM_M 0x6859650 N/A
Semaphore Id : 0x6859650
Semaphore Type : MUTEX
Task Queuing : PRIORITY
Pended Tasks : 1
Owner : 0x69d1a08 Deleted!
Options : 0xd SEM_Q_PRIORITY
SEM_DELETE_SAFE
SEM_INVERSION_SAFE
VxWorks Events
--------------
Registered Task : NONE
Event(s) to Send : N/A
Options : N/A
Pended Tasks
------------
NAME TID PRI TIMEOUT
---------- -------- --- -------
tHttp631-25502 69d21b0 120 0
value = 0 = 0x0
->
아니요, 우리는 taskDelete를 사용하고 있지 않습니다. 작업은 자신의 의무를 끝내고 호출 기능에서 돌아옵니다. 관련된 모든 작업은 동일한 RTP 프로세스에 있습니다. RTP는 계속 실행됩니다. 그것은 종료되지 않습니다. WindRiver에 연락 할 수있는 기회가 있었으면 좋지만 몇 년 전에 지원 계약을 해지했습니다. – GailG