ntp 4.2.8p10 - 禁用配置脚本

时间:2017-10-23 17:47:01

标签: ntp qnx

在为QNX交叉编译NTP时遇到了问题。我追查到了僵局。基本上会发生什么:

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

我想知道为什么Linux没有遇到这种死锁,结果是recvmsg()被认为是signal handler safe,而在QNX中,recvmsg()被明确列为not signal handler safe

我的问题:我是否有办法在配置脚本中传递一个选项,以便在构建NTP时手动禁用已发出信号的I / O?我真的不想手动编辑源代码,以便更容易升级到未来版本的NTP。如果没有其他方法,我应该在生成的config.h脚本中禁用#defines以不使用信号I / O?

我希望找到一种方法来为NTP回购做出贡献,为QNX增加支持,但是现在这些人很难掌握。

谢谢大家的帮助和支持!

1 个答案:

答案 0 :(得分:0)

我们通过提供关闭ntpd中的信号i / o解决了这个问题 以下config.cache值为configure脚本。

ntp_cv_hdr_def_sigio=${ntp_cv_hdr_def_sigio=no} 
ntp_cv_hdr_def_sigpoll=${ntp_cv_hdr_def_sigpoll=no}