为什么在zmq_poll期间出现SIGABRT权限被拒绝错误?

问题描述

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

错误/退出日志为“ 权限被拒绝(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

有人可以在这里帮助我吗?

进程是在Kubernates中运行的容器的一部分。而且这个问题开始突然发生。而且无法恢复。

谢谢

解决方法

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

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

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

为此,HostA中的zmq客户端最终在上述崩溃中结束。我认为崩溃(SIGABRT)不应是在对等端达到这种规则的解决方案。由于SIGABRT异常无法用代码处理。