Apache 段错误。 krb5int_key_delete 断言 destructors_set[keynum] == 1 失败

Apache seg fault. krb5int_key_delete Assertion destructors_set[keynum] == 1 failed

我使用 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 模块。

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

我也运行参与其中,并试图确定原因

关于"Any idea what could be using this library":

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

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

(在我们的例子中,这个 returns 以下)

/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 的符号 link,所以我会确保这不是您所看到的。

我已经向 krb5-bugs@mit.edu 发送了一封电子邮件(基于 https://k5wiki.kerberos.org/wiki/Reporting_bugs),希望有一个 link 的票据来分享这个 post 很快。

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