首页 > 解决方案 > Apache 段错误。krb5int_key_delete 断言 destructors_set[keynum] == 1 失败

问题描述

我使用 Apache 2.4.10 和 Debian 8。我用 apt 安装了 apache 和大多数软件包。很长一段时间一切都很好,但突然我们开始收到段错误。

[Wed Jan 02 00:55:19.233027 2019] [mpm_prefork:notice] [pid 25161] AH00171: Graceful restart requested, doing restart
apache2: ../../../src/util/support/threads.c:383: krb5int_key_delete: Assertion `destructors_set[keynum] == 1' failed.
[Wed Jan 02 00:55:19.326118 2019] [core:notice] [pid 25161] AH00060: seg fault or similar nasty error detected in the parent process
apache2: ../../../src/util/support/threads.c:383: krb5int_key_delete: Assertion `destructors_set[keynum] == 1' failed.
apache2: ../../../src/util/support/threads.c:383: krb5int_key_delete: Assertion `destructors_set[keynum] == 1' failed.
apache2: ../../../src/util/support/threads.c:383: krb5int_key_delete: Assertion `destructors_set[keynum] == 1' failed.
apache2: ../../../src/util/support/threads.c:383: krb5int_key_delete: Assertion `destructors_set[keynum] == 1' failed.
apache2: ../../../src/util/support/threads.c:383: krb5int_key_delete: Assertion `destructors_set[keynum] == 1' failed.
apache2: ../../../src/util/support/threads.c:383: krb5int_key_delete: Assertion `destructors_set[keynum] == 1' failed.
[Wed Jan 02 00:55:19.347698 2019] [:alert] [pid 12257] (4)Interrupted system call: FastCGI: read() from pipe failed (0)
[Wed Jan 02 00:55:19.347729 2019] [:alert] [pid 12257] (4)Interrupted system call: FastCGI: the PM is shutting down, Apache seems to have disappeared - bye

这似乎是 libkrb5.so 的错。据我所知,我在机器上有 2 个库 - libkrb5.so.3 和 libkrb5.so.3.3。

我确实升级了所有软件,希望它被修补。但没有成功。我们不为 apache 使用 kerberos 模块。

知道什么可以使用这个库,甚至如何防止这个问题?

标签: apachesegmentation-faultkerberos

解决方案


我也遇到了这个,并试图确定原因

关于“知道什么可以使用这个库”:

利用 ldd 并假设您有 apache 模块的中心位置,您可以遍历模块列表并使用此库转储模块列表。前任:

find /etc/httpd/modules/*.so -exec sh -c 'echo {}; ldd {} | grep libkrb5' \;

(在我们的例子中,这将返回以下内容)

/etc/httpd/modules/libphp7.so
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f4f35f65000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f4f34839000)
/etc/httpd/modules/libphp7-zts.so
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007ff228114000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007ff226c04000)
/etc/httpd/modules/mod_ssl.so
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f0c0c7fa000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f0c0bf9d000)

我确实注意到了https://krbdev.mit.edu/rt/Ticket/Display.html?id=8614的错误,它指向安装的两个不同版本导致问题,但在我们的环境中,我们在 /usr/ 中有多个库lib64,除了 libkrb5.so.3 是 libkrb5.so.3.3 的符号链接,所以我会确保这不是你所看到的。

我已经向 krb5-bugs@mit.edu 发送了一封电子邮件(基于https://k5wiki.kerberos.org/wiki/Reporting_bugs),并希望很快有一个链接可以在这篇文章中分享。

编辑:按照错误报告@ https://krbdev.mit.edu/rt/Ticket/Display.html?id=8863


推荐阅读