In zeromq-4.0.1 zmq.h, zmq_event_t has two members: event (uint16_t) and value (uint32_t). When socket_base_t::monitor_event() sends the event to the monitor socket, it was sent packed. When the monitor event receiving side type cast "zmq_event_t *event =zmq_msg_data(msg)", the result is misaligned since zmq_event_t is not packed. The easy solution is to make zmq_event_t packed.
In zeromq-4.0.1 zmq.h, zmq_event_t has two members: event (uint16_t) and value (uint32_t). When socket_base_t::monitor_event() sends the event to the monitor socket, it was sent packed. When the monitor event receiving side type cast "zmq_event_t *event =zmq_msg_data(msg)", the result is misaligned since zmq_event_t is not packed. The easy solution is to make zmq_event_t packed.