A method for determining an ownership of for a multiple owner lock. The method
includes determining potential owners of the lock by inspecting a core file of
a computer system or memory of a live system to determine which threads have pointers
to the lock. The method includes identifying a stack for the threads with a stack
pointer pointing to the current active frame and dividing the stack into active
and inactive portions. The stack information is examined for each potential owner
of the lock for pointers to the lock. If the thread has a pointer to the lock in
the inactive portion of the stack, the thread is removed from the set of potential
owners. The method includes retrieving a waiting list for the lock, and any threads
on the waiting list are removed from the set of potential owners.