我有一个非常奇怪的SEGMENT FAULT堆栈如下。
#0 0x00007f3b85fb0f6e in __strstr_sse42 () from /lib64/libc.so.6
#1 0x00007f3b889b5415 in syscheckGetFdPath () from /lib64/libachk.so
#2 0x00007f3b889b4fc7 in acc_achkon_open () from /lib64/libachk.so
#3 0x00007f3b889b46d4 in open () from /lib64/libachk.so
#4 0x0000000000414d44 in nas_log_write_through(buff, size)
nas_log_write_through()
的源代码就像这样
void nas_log_write_through(char *buf, int size)
{
int fd = 0;
mode_t mod = umask(0);
fd = open(LOG_PATH, O_RDWR | O_APPEND | O_CREAT, 0777);
umask(mod);
if (-1 == fd)
{
return;
}
write(fd, buf, size);
close(fd);
}
在大多数情况下,它运作良好,但它突然很糟糕。像以前的节目一样得到核心转储栈。我想要什么是libachk.so呢?为什么在libachk.so中系统调用open()而不是libc.so?
我在谷歌搜索过,但没有任何用处。欢迎任何建议。 非常感谢。
我的系统是SUSE 11 Linux,spc 1。