Debugging glibc回溯-can';t将输出重定向到文件

Debugging glibc回溯-can';t将输出重定向到文件,debugging,glibc,Debugging,Glibc,我正在调试一个C程序(我没有写)。我已经启用了所有的内部调试工具(一大堆printf),并且我编写了一个使用proc_open()的小PHP脚本,它只捕获stdout和stderr,并在一个文件中对它们进行时间协调 目前,二进制文件因glibc捕获的realloc()错误而消亡,并打印了glibc回溯,开始于: *** glibc detected *** /sbin/rsyslogd: realloc(): invalid next size: 0x00002ace626ac910 ***

我正在调试一个C程序(我没有写)。我已经启用了所有的内部调试工具(一大堆printf),并且我编写了一个使用proc_open()的小PHP脚本,它只捕获stdout和stderr,并在一个文件中对它们进行时间协调

目前,二进制文件因glibc捕获的realloc()错误而消亡,并打印了glibc回溯,开始于:

*** glibc detected *** /sbin/rsyslogd: realloc(): invalid next size: 0x00002ace626ac910 ***
有一件事我不明白:我已经确认PHP脚本正在从二进制进程捕获stdout和stderr,并将它们写入正确的文件,但是这个回溯仍然打印到控制台。这是从哪里来的?除了stdout和stderr之外,还有什么神奇的输出通道吗

关于如何将回溯捕获到文件,或使用stderr将其发送出去,有什么想法吗

谢谢,
杰森

对不起。。。我在谷歌搜索了大约半个小时后问了这个问题,但在进一步调查后,我找到了一个解决方案。。。在Koji构建系统中处理此问题的Fedora邮件列表帖子()中

export LIBC_FATAL_STDERR_=1

显然,由于某种原因,默认情况下,错误报告会直接发送到/dev/tty…

Jason引用的邮件列表还建议了一些更为繁重的解决方案,如下所示:

imhokoji(和mock)应该在内部运行构建 一个捕获pty,其输出无论如何都会记录,即使它们重定向 一切。你永远不知道某个包裹会尝试什么疯狂的胡说八道。(罗兰·麦格拉斯)


下面的帖子建议使用
pty
python包来完成这个任务。

。到处都是破碎。