On Wed, 6 Nov 2024 10:18:23 -0500 Steven Rostedt <[email protected]> wrote:
> > Some trial and error led me to conclude it's a race between the logic > > looking up the comm and the process exiting: If the test program exits > > soon after the traced event, it doesn't print the comm. Adding a > > generous usleep() before it exits reliably prints the comm. > > Thanks for letting me know. Let me see if I can fix that! Hmm, that still doesn't make sense. Is this just a single line or do you have other events being recorded? The way the caching works is during the sched_switch tracepoint which still gets called when the task exits. If a trace event is triggered, it sets a per cpu flags to have the next sched_switch record the comm for both the previous and next tasks. Now the reason it can miss is that there's contention on the lock that saves the comms (it does a trylock and if it fails, it just skips it). Or if another task hits the same "comm cache line". This is why I wonder if you have other events being traced. -- Steve
