2-nd round RFR (S) 8032223: nsk/regression/b4663146 gets assert(SafepointSynchronize::is_at_safepoint() || JvmtiEnv::is_thread_fully_suspended(get_thread(), false, &debug_bits)) (original) (raw)
serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Tue Feb 11 18:57:06 PST 2014
- Previous message: 2-nd round RFR (S) 8032223: nsk/regression/b4663146 gets assert(SafepointSynchronize::is_at_safepoint() || JvmtiEnv::is_thread_fully_suspended(get_thread(), false, &debug_bits))
- Next message: hg: hsx/jdk7u/hotspot: 2 new changesets
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 2/4/14 12:45 PM, serguei.spitsyn at oracle.com wrote:
Thanks, Dan! Some comments below.
On 2/4/14 7:48 AM, Daniel D. Daugherty wrote: On 2/4/14 4:13 AM, serguei.spitsyn at oracle.com wrote:
Please, review the fix for: https://bugs.openjdk.java.net/browse/JDK-8032223
Open webrev: http://cr.openjdk.java.net/~sspitsyn/webrevs/2014/hotspot/8032223-JVMTI-FRAME.1/ src/share/vm/prims/jvmtiEnvBase.hpp No comments. src/share/vm/prims/jvmtiEnv.cpp No comments beyond David's tweak to the comment. Will fix it before push. For future work... Looks like these VM ops also need the liveness check on the target JavaThread: VMGetOwnedMonitorInfo VMGetStackTrace JvmtiEnv::GetStackTrace() looks like it has the same isthreadfullysuspended() flaw... I know about this. There are even more issues: GetCurrentContendedMonitor GetOwnedMonitorStackDepthInfo NotifyFramePop I'll check if we can use an existing bug to add this extra request. Otherwise, will file new one.
Filed this one: https://bugs.openjdk.java.net/browse/JDK-8034249
Thanks, Serguei
Thanks, Serguei
Dan
Summary: This is the second round of review for this issue. But it was decided that the JDK-8032223 must be used to cover it instead of the JDK-6471769. The 8032223 was initially closed as a dup of 6471769 but it has been re-open now. There is a general issue in the suspend equivalent condition mechanism: Two subsequent calls to the JvmtiEnv::isthreadfullysuspended() may return different results: - 1-st: true - 2-nd: false This suspend equivalent issue is covered by another bug: https://bugs.openjdk.java.net/browse/JDK-6280037 The bug to fix in this review is a specific manifestation of the 6280037 in the JVMTI GetFrameCount() that has a major impact on the SQE nightly. It is on the Test Stabilization radar as well as the 6280037. There are many tests intermittently failing because of this. I've also decided to fix the same issue in the JVMTI GetFrameLocation() as well. The JVMTI GetFrameCount() spec tells: "If this function is called for a thread actively executing bytecodes (for example, not the current thread and not suspended), the information returned is transient." So, it is Ok to call the GetFrameCount() for the non-suspended target thread. To achieve safety, the frame count for non-suspended threads is calculated at a safepoint. It should be Ok and more safe to do the same for suspended threads as well. There should be no big performance impact because it is already on a slow path. It is still important to avoid safepointing when the target thread is current. The bug 6280037 should go out of the Test Stabilization radar (remove the svc-nightly label) as the most of the impacted tests must be covered by the 8032223. Testing: In progress: - nsk.jvmti, nsk.jdi, nsk.jdwp - JTreg com/sun/jdi Thanks, Serguei
- Previous message: 2-nd round RFR (S) 8032223: nsk/regression/b4663146 gets assert(SafepointSynchronize::is_at_safepoint() || JvmtiEnv::is_thread_fully_suspended(get_thread(), false, &debug_bits))
- Next message: hg: hsx/jdk7u/hotspot: 2 new changesets
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]