In case where ep_disable is called by a different thread (close IPC command)
there was a race between streaming threads setting
session->streaming_thread to NULL and IPC command triggering a call
to disable_holding_lock and freeing session.
Resetting the streaming_thread in streaming thread must happens before
it signals its shutdown event to prevent the race.
Co-authored-by: lateralusX <lateralusx.github@gmail.com>
ep_rt_thread_sleep (timeout_ns);
}
+ session->streaming_thread = NULL;
ep_rt_wait_event_set (&session->rt_thread_shutdown_event);
EP_GCX_PREEMP_EXIT
- session->streaming_thread = NULL;
-
if (!success)
ep_disable ((EventPipeSessionID)session);