I am working on a commercial website that uses SBCL and multiple
threads to serve pages. I have some performance bottlenecks and would
like to use SB-SPROF for profiling, but it doesn't work with all
threads at once. It would be really helpful to me if SB-SPROF knew how
to profile activity in all threads.
Attached is a patch that makes sb-sprof profile all threads that are alive
when SB-SPROF:START-PROFILING is called. Some of the thread
enumeration code is taken from slime's swank-sbcl.lisp.
It would be nice if sb-sprof could profile threads that are created
during a profile run. This patch doesn't do it, because I'm not sure
how to discover when a new thread is created so the signals can be set
The patch also has an unrelated change to avoid a divide-by-zero error
if no samples were taken during profiling.