2017-10-23 2 views
0

QNX 용 NTP를 크로스 컴파일 할 때 문제가 발생했습니다. 나는 그것을 교착 상태로 추적했다. 리눅스는이 교착 상태로 실행되지 않는 이유ntp 4.2.8p10 - configure 스크립트에서 신호 입출력을 비활성화하십시오.

t0 - clock_select() calls realloc() 
t1 - realloc() locks the heap 
t2 - signal handler is called 
t3 - inside sig handler recvmsg() is called 
t4 - recvmsg() calls malloc() 
t5 - malloc() tries to lock the heap 
DEADLOCK 

내가 궁금해하며() QNX의 recvmsg()에서 명시 적으로 not signal handler safe로 표시되는 동안 signal handler safe 간주되는 recvmsg을 밝혀 : 기본적으로 무슨 일입니다.

내 질문 : NTP를 구축 할 때 신호가있는 I/O를 수동으로 비활성화하는 옵션을 구성 스크립트에 전달할 수 있습니까? 나는 NTP의 미래 버전으로 쉽게 업그레이드 할 수 있도록 소스 코드를 수동으로 편집하고 싶지 않습니다. 다른 방법이 없다면 #define은 결과로 나오는 config.h 스크립트에서 신호 처리 된 I/O를 사용하지 않도록 설정해야합니까?

QNX에 대한 지원을 추가하기 위해 NTP Repo에 기여할 방법을 찾고 싶지만, 현재이 사람들은 파악하기가 어렵습니다.

귀하의 도움과 지원에 감사드립니다.

답변

0

다음 config.cache 값을 configure 스크립트에 제공하여 ntpd에서 신호가있는 I/O를 해제하여이 문제를 해결했습니다.

ntp_cv_hdr_def_sigio=${ntp_cv_hdr_def_sigio=no} 
ntp_cv_hdr_def_sigpoll=${ntp_cv_hdr_def_sigpoll=no} 
관련 문제