Open Source Development

 View Only

 AIX 7.3 libzmq poll causes core dump

Avinesh Benjamin's profile image
Avinesh Benjamin posted Sat September 13, 2025 02:54 AM

Hi,

We use libzmq built on AIX 7.2 with gcc/IBM compiler both seem to cause core dump after a few hours on AIX 7.3

Core dump results:

pth_signal.pthread_kill(??, ??) at 0x80000000001e884
pth_signal._p_raise(??) at 0x80000000001e0c4
raise.raise(??) at 0x900000000252048
abort() at 0x9000000002d0f60
zmq::zmq_abort(char const*)(??), line 61 in "err.cpp"
 
zmq::socket_base_t::process_commands(int, bool)(this = 0x0000000110f4df10, timeout_ = 18464208, throttle_ = @0x0fffffffffffdc18), line 1491 in "socket_base.cpp"
unnamed block in zmq::socket_base_t::getsockopt(int, void*, unsigned long*)(??, ??, ??, ??), line 459 in "socket_base.cpp"
unnamed block in zmq::socket_base_t::getsockopt(int, void*, unsigned long*)(??, ??, ??, ??), line 459 in "socket_base.cpp"
zmq::socket_base_t::getsockopt(int, void*, unsigned long*)(??, ??, ??, ??), line 459 in "socket_base.cpp"
 
 
zmq_getsockopt(s_ = 0x0000000110f4df10, option_ = 15, optval_ = 0x0fffffffffffdc20, optvallen_ = 0x0fffffffffffdc18), line 266 in "zmq.cpp"
unnamed block in zmq_poll(??, ??, ??), line 977 in "zmq.cpp"
unnamed block in zmq_poll(??, ??, ??), line 977 in "zmq.cpp"
unnamed block in zmq_poll(??, ??, ??), line 977 in "zmq.cpp"
unnamed block in zmq_poll(??, ??, ??), line 977 in "zmq.cpp"
unnamed block in zmq_poll(??, ??, ??), line 977 in "zmq.cpp"
zmq_poll(??, ??, ??), line 977 in "zmq.cpp"
------------------------------------------------------------------------------
zmq::zmq_abort(char const*)(??), line 61 in "err.cpp"
unnamed block in io_thread.zmq::io_thread_t::in_event()(this = ??), line 68 in "io_thread.cpp"
unnamed block in io_thread.zmq::io_thread_t::in_event()(this = ??), line 68 in "io_thread.cpp"
io_thread.zmq::io_thread_t::in_event()(this = ??), line 68 in "io_thread.cpp"
unnamed block in zmq::pollset_t::loop()(this = 0x0000000110bfbbf0), line 210 in "pollset.cpp"
unnamed block in zmq::pollset_t::loop()(this = 0x0000000110bfbbf0), line 210 in "pollset.cpp"
unnamed block in zmq::pollset_t::loop()(this = 0x0000000110bfbbf0), line 210 in "pollset.cpp"
zmq::pollset_t::loop()(this = 0x0000000110bfbbf0), line 210 in "pollset.cpp"
thread_routine(arg_ = 0x0000000110bfbc88, __x = [internal error: nil paramlist for function containing __x]
----------------------------------------------------------------------------------------------------------------------------------------------------
abort() at 0x9000000002d0f94
_ZN3zmq9zmq_abortEPKc(??) at 0x8000000010ee700
_ZN3zmq11io_thread_t8in_eventEv(??) at 0x80000000112324c
_ZN3zmq6poll_t4loopEv(??) at 0x800000001120568
_ZN3zmq20worker_poller_base_t14worker_routineEPv(??) at 0x8000000011218b8
thread_routine(??) at 0x80000000111f0ac
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
These are dbx where result of 3 different dumps, the issue happens randomly after a few hours or even 1 day. 
For libzmq please advice what is correct options to build it on AIX 7.3
./configure PKG_CONFIG_PATH=/workdir/libsodium_1.20.0/lib/pkgconfig/ --with-poller=auto --enable-shared=yes --enable-static=no MAKE="gmake" --disable-perf --with-aix-soname=aix --prefix=/workdir/zmq_4_3_5 --with-libsodium=yes
configure: Choosing I/O thread polling system from 'kqueue epoll devpoll pollset poll select'...
configure: Using 'pollset' I/O thread polling system
configure: Using 'poll' zmq_poll(er)_* API polling system
configure: Building with zmq_ppoll
bash-5.2# gmake -j4
Making all in doc
gmake[1]: Entering directory '/workdirzeromq-4.3.5/doc'
gmake[1]: Nothing to be done for 'all'.
gmake[1]: Leaving directory '/workdirzeromq-4.3.5/doc'
gmake[1]: Entering directory '/workdirzeromq-4.3.5'
  CXX      tools/curve_keygen.o
  CC       external/sha1/src_libzmq_la-sha1.lo
  CC       external/unity/unity.o
  CXX      tests/libtestutil_a-testutil.o
  CXX      tests/libtestutil_a-testutil_monitoring.o
  CXX      tests/libtestutil_a-testutil_security.o
  CXX      tests/libtestutil_a-testutil_unity.o
  CXX      src/libzmq_la-address.lo
  CXX      src/libzmq_la-channel.lo
  CXX      src/libzmq_la-client.lo
  CXX      src/libzmq_la-clock.lo
  CXX      src/libzmq_la-ctx.lo
  CXX      src/libzmq_la-curve_client.lo
  CXX      src/libzmq_la-curve_mechanism_base.lo
  CXX      src/libzmq_la-curve_server.lo
  CXX      src/libzmq_la-dealer.lo
  CXX      src/libzmq_la-devpoll.lo
  CXX      src/libzmq_la-dgram.lo
  CXX      src/libzmq_la-dish.lo
  CXX      src/libzmq_la-dist.lo
  CXX      src/libzmq_la-endpoint.lo
  CXX      src/libzmq_la-epoll.lo
  CXX      src/libzmq_la-err.lo
  CXX      src/libzmq_la-fq.lo
  CXX      src/libzmq_la-gather.lo
  CXX      src/libzmq_la-gssapi_mechanism_base.lo
  CXX      src/libzmq_la-gssapi_client.lo
  CXX      src/libzmq_la-gssapi_server.lo
  CXX      src/libzmq_la-io_object.lo
  CXX      src/libzmq_la-io_thread.lo
  CXX      src/libzmq_la-ip.lo
  CXX      src/libzmq_la-ip_resolver.lo
  CXX      src/libzmq_la-ipc_address.lo
src/io_thread.cpp: In member function 'void zmq::io_thread_t::start()':
src/io_thread.cpp:36:20: error: no matching function for call to 'zmq::pollset_t::start(char [16])'
   36 |     _poller->start (name);
      |     ~~~~~~~~~~~~~~~^~~~~~
In file included from src/poller.hpp:23,
                 from src/io_thread.hpp:8,
                 from src/io_thread.cpp:8:
src/pollset.hpp:41:10: note: candidate: 'void zmq::pollset_t::start()'
   41 |     void start ();
      |          ^~~~~
src/pollset.hpp:41:10: note:   candidate expects 0 arguments, 1 provided
gmake[1]: *** [Makefile:5638: src/libzmq_la-io_thread.lo] Error 1
gmake[1]: *** Waiting for unfinished jobs....
gmake[1]: Leaving directory '/workdirzeromq-4.3.5'
gmake: *** [Makefile:8439: all-recursive] Error 1
This issue is specific to AIX 7.3, Please advice if we need to try building with the IBM compiler on 7.3, on 7.2 it didnt make any difference no matter which compiler we used result was the same.
The same code works without issues on 7.1