Getting the stack trace of a different thread

If this is possible, does anyone know how to do it? (the “Newless Cluebies” forum has disappeared in recent shuffles, so this seemed the best place to ask for help :))

In short, I have a reference to a Thread, and I want to get a stack trace for where that thread currently is. I’m pretty sure this is impossible, because it would make finding deadlocks considerably easier, and I’ve never heard of it in that context :). AFAICS there is no architectural reason why Java doesn’t support this - unless OS schedulers don’t allow you to peek at other threads’ stack frames etc?

FYI, I’m fed up with the bizarre bugs in NIO that appear to be deadlocks within the NIO library. I call Selector.wakeup() and I get ignored - that should NOT be possible, AFAICS, according to the docs. Seeing as I have references to all the user threads in the VM, I could easily take a “snapshot” of the stacktrace of each of them using the code I’m looking for. Since the most interesting ones appear to be deadlocked, I can’t see a way of getting that snapshot otherwise :).

" If another thread is currently blocked in an invocation of the select() or select(long) methods then that invocation will return immediately" - this is manifestly NOT happening, but Sun would never accept a bug report on this without a test case (fair enough, given how tricky deadlock scenarios are to reproduce), and I can’t gather enough info to work out a test case for this :(. Unless Sun’s bug team would accept 2 Mb of source code as a test case… :wink:

EDIT: I’d really like to believe there are no deadlocks in the NIO lib, but e.g. the most recent failure-to-wakeup problem just solved itself merely by restarting a few times. On the third or fourth restart, following the exact same procedure each time, it Just Worked. The procedure was run by hand, so the main difference was the timing of each action :(.

Something like this?

"bug id. 4593133

Synopsis API to generate Java stack traces for all threads"

But, you will have to wait till Tiger.

Chuckle; yes, that would be about right. Guess I have to endure the status quo for another 9 months then (until it becomes stable enough for production use; just look how long it took 1.4.x nio.* to become production ready!)

JVMPI?

Cas :slight_smile: