【问题标题】:Why a SIGABRT permission denied error appeared during a zmq_poll()?为什么在 zmq_poll() 期间出现 SIGABRT 权限被拒绝错误?
【发布时间】:2020-11-10 08:16:01
【问题描述】:

我正在使用 zmq PUSHPULL 套接字。并且最近开始观察 SIGABRT 崩溃,在zmq_poll() 操作中。

错误/退出日志是“Permission denied (src/tcp_connecter.cpp:361)

(gdb) bt
#0 0x00007ffff76d053f in raise () from /lib64/libc.so.6
#1 0x00007ffff76ba895 in abort () from /lib64/libc.so.6
#2 0x00007ffff7f59ace in zmq::zmq_abort(char const*) () from /lib64/libzmq.so.5
#3 0x00007ffff7f9ef36 in zmq::tcp_connecter_t::connect() () from /lib64/libzmq.so.5
#4 0x00007ffff7f9f060 in zmq::tcp_connecter_t::out_event() () from /lib64/libzmq.so.5
#5 0x00007ffff7f6bc2c in zmq::epoll_t::loop() () from /lib64/libzmq.so.5
#6 0x00007ffff7f9ffba in thread_routine () from /lib64/libzmq.so.5
#7 0x00007ffff75d058e in start_thread () from /lib64/libpthread.so.0
#8 0x00007ffff77956a3 in clone () from /lib64/libc.so.6

有人可以帮我吗?

进程是在 Kubernetes 中运行的容器的一部分。这个问题突然开始出现。并且无法恢复。

谢谢,

【问题讨论】:

  • 您是否阅读并分析了 tcp_connecter.cpp 源代码文件“有点”第 361 行?您在那里发现了碰撞的根本原因是什么?如果您可以生成可重现的 MCVE / MWE(作为声称的问题自我复制容器化图像)来展示该声明,请随时将其作为新的 ZeroMQ GitHub 问题发布。

标签: linux kubernetes tcp zeromq czmq


【解决方案1】:

与此同时,我解决了这个问题。

主机 A 中的 zmq 接口试图连接主机 B。在主机 A 中观察到上述错误。

这个问题在重启 HostB 后开始出现一次。我注意到,在 HostB 中添加了一个 ip6table 规则,作为其重新启动的一部分。该规则在 INPUT 和 HostB 中的转发链中执行“拒绝管理员禁止”。 (我必须在我的笔记中搜索确切的规则。)

作为其中的一部分,HostA 中的 zmq 客户端最终导致上述崩溃。我相信崩溃(SIGABRT)不应该是在对等端达到此类规则的解决方案。由于 SIGABRT 异常无法在代码中处理。

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 2018-07-19
    相关资源
    最近更新 更多