我有一个运行的线程(OS X 10.10.5)与此堆栈跟踪挂起。这是在大约20个小时的操作之后,可能与低内存条件有关。但是,问题是,为什么malloc不返回null?为什么线程的执行需要停止?请求的实际字节数很小(对于路径上的字符串操作)。
$('input[name=hello]').on('input', function() {...});
失败的操作的目的是清除临时目录,以便启动磁盘不会填满程序生成的临时文件。此过程失败,磁盘确实填满,线程停止(如实际停止,并且主线程连接到它),并且从磁盘删除文件的过程停止。此外,由于线程已停止,因此必须终止该进程。我不知道你是否可以把它称为一个bug,因为失败的过程是试图阻止实际发生的事情。
感谢您的见解。
答案 0 :(得分:0)
你提到磁盘已满,所以内核可能正试图将内存换成磁盘而失败。在这种情况下,macOS暂停,而不是杀死失控过程。我们的想法是释放一些空间和/或关闭其他一些应用程序,然后恢复暂停的过程,例如使用kill -CONT <PID>
。
听起来,真正的问题是你要分配太多内存或泄漏内存。