Search code examples
linuxkubernetestcpzeromqczmq

Why a SIGABRT permission denied error appeared during a zmq_poll()?


I am using zmq PUSH and PULL sockets. And recently started observing SIGABRT crash, in zmq_poll() operation.

The error/exit log is "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

Could anyone help me here ??

Process is a part of a container running in Kubernates. And this issue started occuring suddenly. And couldn't be able to recover.

Thanks,


Solution

  • Meanwhile, I resolved the issue.

    The zmq interface in host A was trying to connect to Host B. And above error is observed in Host A.

    And this issue started occuring once after restarting HostB. And I could notice, there is an ip6table rule got added in HostB as part of its restart. This rule was doing "reject with admin prohibited" in INPUT and forward chain in HostB. (I have to search my notes for exact rule.)

    As part of this, zmq client in HostA was ending up in above mentioned crash. I believe crash (SIGABRT) should not be solution for hitting such rule in peer end. Since SIGABRT exception is unable to handle in code.