On Wed, 2011-05-18 at 00:53 +0200, Rainer Jung wrote:

If you can find pstack, that will be easier. pstack just takes the
process id and writes out the stacks for all threads. My quick search
indicates it pstack should exist for FreeBSD.


There is a port for this but it only support i386 arch, im running amd64.

http://www.freshports.org/sysutils/pstack/

GDB allows to also get details on the values of variables used, step
through the code etc. You give gdb two arguments, the path to your httpd
binary and the process ID of the CPU consuming process. Once the gdb
prompt is shown, you can enter

thread apply all bt full

which will output thread and variable information for all threads.

pstack and gdb might produce many lines of output, especially for
worker, so you might want to write the result directly to a file, e.g.

pstack PID > /tmp/pstack.txt

And yes, if the problem also occurs for prefork, then that makes
debugging a bit easier.


I'll recompile to prefork and give GDB a go, thanks for the info.