if a bpf begin probe sets exit status, the main thread will skip the pause() call and immediately deallocate global data structures. Then the perf_event_loop thread will run on the corrupted data and occasionally fail. Example result is an assertion failure due count_active_cpus() running on corrupted data. Could change the main thread to join() instead of detach(), but then all threads must be modified to listen for exit status including exit status from begin thread. I think if the begin probe was running, it wasn't correct to start the perf_event_loop (or PERF_EVENT_IOC_ENABLE, or any of the procfs threads) in the first place, as those things logically happen after the begin probe has already exited. Simply clean up and exit.
fixed 1d63e758149
really