[lttng-dev] Lttng add-context perf commands gives me error

David Boles (dboles) dboles at micron.com
Fri Nov 20 17:33:51 EST 2015


I’m using the liburcu system (qsbr flavor) with its list structures as well as a variant of a bonsai tree.

In my unit testing code I have a race between the rcu callback invocation thread (currently just the default one) invoking a callback it was given and the main thread tearing down data that callback depends on.

In looking at the call_rcu_thread() function, it looks like that thread sleeps for no more than ~10ms. However, even if I guarantee 20ms elapses between the last time call_rcu() is called and my teardown, I am still seeing the callback thread processing "old" call_rcu() requests. This appears correlated with the callback thread having thousands of free's to process.

In my real application I happened to have set things up so that everything associated with rcu-managed allocation is freed with call_rcu() so I'm not seeing a problem there (so far). However, I suspect the same issue could crop up with abnormal exit paths.

How do I reliably determine that all rcu callbacks registered prior to some point in time have been processed? 

Thanks,

David Boles



More information about the lttng-dev mailing list