0

我正在使用 zmqPUSHPULL套接字。并且最近开始观察 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 中运行的容器的一部分。这个问题突然开始出现。并且无法恢复。

谢谢,

4

1 回答 1

1

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

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

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

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

于 2020-11-20T14:26:33.620 回答