profiling hangs - quiesce_cpus()

Adrian Chadd adrian at freebsd.org
Sat Jan 4 04:22:40 UTC 2014


Here's another fun one.

If the idle thread on a CPU doesn't run, then quiesce_cpus() (and thus
quiesce_all_cpus()) doesn't finish. The td_generation on the
idlethread doesn't get bumped as the idlethread doesn't get run.

Because of this, things like lock profiling just hangs when trying to
get stats or enable it as it does a CPU synchronisation by the above
function calls and they don't ever return.

Any ideas? It makes it a bit annoying to do fine grained lock
contention profiling when I'm doing this. :-)

Thanks!




-a


More information about the freebsd-arch mailing list