comparison src/share/vm/runtime/thread.cpp @ 4872:aa3d708d67c4

7141200: log some interesting information in ring buffers for crashes Reviewed-by: kvn, jrose, kevinw, brutisso, twisti, jmasa
author never
date Wed, 01 Feb 2012 07:59:01 -0800
parents 94ec88ca68e2
children 0382d2b469b2
comparison
equal deleted inserted replaced
4871:f067b4e0e04b 4872:aa3d708d67c4
1 /* 1 /*
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
1598 if (!destroy_vm || JDK_Version::is_jdk12x_version()) { 1598 if (!destroy_vm || JDK_Version::is_jdk12x_version()) {
1599 // JSR-166: change call from from ThreadGroup.uncaughtException to 1599 // JSR-166: change call from from ThreadGroup.uncaughtException to
1600 // java.lang.Thread.dispatchUncaughtException 1600 // java.lang.Thread.dispatchUncaughtException
1601 if (uncaught_exception.not_null()) { 1601 if (uncaught_exception.not_null()) {
1602 Handle group(this, java_lang_Thread::threadGroup(threadObj())); 1602 Handle group(this, java_lang_Thread::threadGroup(threadObj()));
1603 Events::log("uncaught exception INTPTR_FORMAT " " INTPTR_FORMAT " " INTPTR_FORMAT",
1604 (address)uncaught_exception(), (address)threadObj(), (address)group());
1605 { 1603 {
1606 EXCEPTION_MARK; 1604 EXCEPTION_MARK;
1607 // Check if the method Thread.dispatchUncaughtException() exists. If so 1605 // Check if the method Thread.dispatchUncaughtException() exists. If so
1608 // call it. Otherwise we have an older library without the JSR-166 changes, 1606 // call it. Otherwise we have an older library without the JSR-166 changes,
1609 // so call ThreadGroup.uncaughtException() 1607 // so call ThreadGroup.uncaughtException()
3883 } 3881 }
3884 3882
3885 ThreadService::add_thread(p, daemon); 3883 ThreadService::add_thread(p, daemon);
3886 3884
3887 // Possible GC point. 3885 // Possible GC point.
3888 Events::log("Thread added: " INTPTR_FORMAT, p); 3886 Events::log(p, "Thread added: " INTPTR_FORMAT, p);
3889 } 3887 }
3890 3888
3891 void Threads::remove(JavaThread* p) { 3889 void Threads::remove(JavaThread* p) {
3892 // Extra scope needed for Thread_lock, so we can check 3890 // Extra scope needed for Thread_lock, so we can check
3893 // that we do not remove thread without safepoint code notice 3891 // that we do not remove thread without safepoint code notice
3928 // of this thread since it is removed from the queue. 3926 // of this thread since it is removed from the queue.
3929 p->set_terminated_value(); 3927 p->set_terminated_value();
3930 } // unlock Threads_lock 3928 } // unlock Threads_lock
3931 3929
3932 // Since Events::log uses a lock, we grab it outside the Threads_lock 3930 // Since Events::log uses a lock, we grab it outside the Threads_lock
3933 Events::log("Thread exited: " INTPTR_FORMAT, p); 3931 Events::log(p, "Thread exited: " INTPTR_FORMAT, p);
3934 } 3932 }
3935 3933
3936 // Threads_lock must be held when this is called (or must be called during a safepoint) 3934 // Threads_lock must be held when this is called (or must be called during a safepoint)
3937 bool Threads::includes(JavaThread* p) { 3935 bool Threads::includes(JavaThread* p) {
3938 assert(Threads_lock->is_locked(), "sanity check"); 3936 assert(Threads_lock->is_locked(), "sanity check");