Hi Steve, >>> Assuming this does fix your issue, I sent out a real patch with the >>> explanation of what happened in the change log, so that you can see why >>> that change was your issue. >> >> Yes, it does the trick, thanks very much! > > Can I get a "Tested-by" from you? Sure! Can you check if the static_key_disable() and static_key_enable() calls are correctly ordered compared to rcu_assign_pointer() and explain why they are, as I not really understand that it's different from tracepoint_update_call vs. rcu_assign_pointer >> Now I can finally use: >> >> trace-cmd record -e all -P $(pidof io_uring-cp-forever) >> >> But that doesn't include the iou-wrk-* threads >> and the '-c' option seems to only work with forking. > > Have you tried it? It should work for threads as well. It hooks to the > sched_process_fork tracepoint, which should be triggered even when a new > thread is created. > > Or do you mean that you want that process and all its threads too that are > already running? I could probably have it try to add it via the /proc file > system in that case. > > Can you start the task via trace-cmd? > > trace-cmd record -e all -F -c io_uring-cp-forever ... I think that would work, but I typically want to analyze a process that is already running. >> Is there a way to specify "trace *all* threads of the given pid"? >> (Note the threads are comming and going, so it's not possible to >> specifiy -P more than once) > > Right, although, you could append tasks manually to the set_event_pid file > from another terminal after starting trace-cmd. Once a pid is added to that > file, all children it makes will also be added. That could be a work around > until we have trace-cmd do it. Sure, but it will always be racy. With children, does new threads also count as children or only fork() children? > Care to write a bugzilla report for this feature? > > https://bugzilla.kernel.org/buglist.cgi?component=Trace-cmd%2FKernelshark&list_id=1088173 I may do later... Thanks! metze