diff --git a/userspace/libsinsp/parsers.cpp b/userspace/libsinsp/parsers.cpp index 0681047f67..c4fd722984 100644 --- a/userspace/libsinsp/parsers.cpp +++ b/userspace/libsinsp/parsers.cpp @@ -715,8 +715,11 @@ bool sinsp_parser::reset(sinsp_evt *evt) // int fd_location = get_fd_location(etype); ASSERT(evt->get_param_info(fd_location)->type == PT_FD); - evt->get_tinfo()->m_lastevent_fd = evt->get_param(fd_location)->as(); - evt->set_fd_info(evt->get_tinfo()->get_fd(evt->get_tinfo()->m_lastevent_fd)); + if ((etype != PPME_SOCKET_SENDMMSG_E && etype != PPME_SOCKET_RECVMMSG_E) || evt->get_num_params() != 0) + { + evt->get_tinfo()->m_lastevent_fd = evt->get_param(fd_location)->as(); + evt->set_fd_info(evt->get_tinfo()->get_fd(evt->get_tinfo()->m_lastevent_fd)); + } } evt->get_tinfo()->m_latency = 0; @@ -4080,6 +4083,12 @@ void sinsp_parser::parse_rw_exit(sinsp_evt *evt) int64_t tid = evt->get_tid(); sinsp_evt *enter_evt = &m_tmp_evt; ppm_event_flags eflags = evt->get_info_flags(); + uint16_t etype = evt->get_scap_evt()->type; + + if ((etype == PPME_SOCKET_SENDMMSG_X || etype == PPME_SOCKET_RECVMMSG_X) && evt->get_num_params() == 0) + { + return; + } // // Extract the return value