I've been troubleshooting a pretty difficult issue on Linux where a JVM appears to hang. As part of the investigation, I've been trying to capture the list of current tasks and their state using one of the "magic" sysrq commands:
echo t > /proc/sysrq-trigger
What is astonishing is if I do this on a healthy system, I get a full list of all processes, their state and current call stack. When I do it with an "unhealthy" system (i.e. one where the JVM has hung somehow), some processes are missing. For example, the parent process of my multithreaded Java application is not being reported at all. This makes it really hard to draw any conclusions since I can't get an accurate snapshot of what's going on.
Anybody know if there are conditions where a process may be excluded from that report?