C -NetBSD 3.1错误 - 在Malloc()中:警告:递归电话



测试方案是ping的ping,ctr c也可以从脚本中调用。

似乎是当信号处理程序调用时,ping在malloc内部。信号处理程序还称为Malloc,Malloc返回了下面的警告。 在malloc()中:警告:递归呼叫

但我仍然找不到它如何造成崩溃,有人可以解释

ah,可怕的信号处理程序,使用非伦敦功能问题。

问题是 *BSD ping的功能 - 修养者从一开始就牢固地做事。

FreeBSD在1994年添加了此问题,在1996年注意到了这一点,并开始了解决该问题的途径,而不是事实证明这一问题,并在1998年的某个时候进行了最终修复。

OpenBSD在1997年添加了此问题,在2002年注意到它,但完全错过了问题的性质,直到2015年才正确解决问题。

NetBSD在1996年添加了此问题,但是,正如您发现的那样,它尚未解决。NetBSD可能应该导入OpenBSD ping。

问题既不是malloc()也不是任何STDIO(包括printf())是重新入侵,这是信号处理程序中使用的所有代码的必要性。

有数十个更好的地方可以找到重新入侵,信号处理程序问题等的描述,但是也许这个问题及其接受的答案(以及一些相关问题)将是一个很好的开始:

为什么malloc()和printf()表示非诱因?

最新更新