--- old/src/share/vm/runtime/vmThread.cpp 2013-02-12 14:33:45.132829600 +0100 +++ new/src/share/vm/runtime/vmThread.cpp 2013-02-12 14:33:44.836429100 +0100 @@ -386,7 +386,9 @@ event.set_operation(op->type()); event.set_safepoint(op->evaluate_at_safepoint()); event.set_blocking(!op->evaluate_concurrently()); - event.set_caller(op->calling_thread()->osthread()->thread_id()); + // Only write caller thread information for non-concurrent vm operations. + // For concurrent vm operations, the caller thread could have exited already. + event.set_caller(op->evaluate_concurrently() ? 0 : op->calling_thread()->osthread()->thread_id()); event.commit(); }