Hi Serguei, I've done some debug, and there seems to be some difference in behaviour with Hotspot with regards the report VM_INIT command, i'm not sure I quite understand why... so i'm consulting with a colleague to get some help. I'll update the bug when I have some more information. Thanks Andrew
Andrew Leonard Java Runtimes Development IBM Hursley IBM United Kingdom Ltd Phone internal: 245913, external: 01962 815913 internet email: andrew_m_leon...@uk.ibm.com From: "serguei.spit...@oracle.com" <serguei.spit...@oracle.com> To: Andrew Leonard <andrew_m_leon...@uk.ibm.com> Cc: serviceability-dev@openjdk.java.net Date: 24/04/2018 01:47 Subject: Re: RFR: 8201409: JDWP debugger initialization hangs intermittently The most relevant stack traces from Solaris pstack dump are: 12 ----------------- lwp# 2 / thread# 2 -------------------- 13 ffffffff7eae9b3c lwp_cond_wait (100123448, 100123430, 0, 0) 14 fffffffd12331a94 void os::PlatformEvent::park() (100123400, e6c40, e6c00, 0, fffffffd12adbf00, 100123430) + c4 15 fffffffd122c6038 int Monitor::IWait(Thread*,long) (100122f30, 100122000, 0, fffffffd12b4dba8, 0, 100122f50) + 98 16 fffffffd122c6a4c bool Monitor::wait(bool,long,bool) (100122f30, 1, 0, 0, ffff2155, 100122000) + 7c 17 fffffffd125464e8 int JavaThread::java_suspend_self() (100122000, 1, 40000000, 1001220b8, 100122f30, 100122f30) + a8 18 fffffffd120c84a4 int JvmtiRawMonitor::raw_wait(long,bool,Thread*) (10079e3b0, 10079e430, 1, 100122000, 94400, fffffffd12b70600) + 254 19 fffffffd120942ec jvmtiError JvmtiEnv::RawMonitorWait(JvmtiRawMonitor*,long) (4, 10079e3b0, ffffffffffffffff, 100122000, 0, fffffffd12adbf00) + 5c 20 fffffffd0f8385bc debugMonitorWait (fffffffd0f946268, c10, c00, fffffffd0f945580, fffffffd0f945580, 0) + 3c 21 fffffffd0f825140 enqueueCommand (1007a0a20, ffffffffffefc418, 103800, ffffffffffefc3e8, 0, fffffffd0f945580) + 140 22 fffffffd0f826e58 eventHelper_reportEvents (0, 10079a000, 0, 1007a0a20, 1, 1) + 108 23 fffffffd0f81b4c0 initialize (1001222e0, c00, 4, fffffffd0f83edc0, fffffffd0f9460d0, fffffffd0f945580) + 540 24 fffffffd0f81a77c cbEarlyException (fffffffd0f946190, 1001222e0, 1005953a0, fffffffd0f83eaa0, fffffffd0f946268, 1005953a8) + 21c 25 fffffffd120af6a4 void JvmtiExport::post_exception_throw(JavaThread*,Method*,unsigned char*,oopDesc*) (100122000, fffffffd12b78f38, 100764b40, 62cb91b50, 100122d48, fffffffd12b7a618) + 15b4 26 fffffffd11c27484 unsigned char*InterpreterRuntime::exception_handler_for_exception(JavaThread*,oopDesc*) (0, ffffffff4a0014e0, 100122000, ffffffff4a001470, 100122d40, fffffffd12adbf00) + 704 27 ffffffff6100eac0 * JITDebug.debugTarget()V+29 28 ffffffff61009ecc * JITDebug.parseArgs([Ljava/lang/String;)Z+50 29 ffffffff610084ac * JITDebug.main([Ljava/lang/String;)V+8 30 ffffffff610003c0 ???????? (ffffffff7d0ffc20, ffffffff7d0ffe30, a, ffffffff4a000f18, ffffffff6100ff40, ffffffff7d0ffd78) + fff8006cc46de0b0 31 fffffffd11c43134 void JavaCalls::call_helper(JavaValue*,const methodHandle&,JavaCallArguments*,Thread*) (ffffffff7d0ffe28, ffffffff4a000f18, ffffffff7d0ffd68, ffffffff7d0ffde8, e, ffffffff61000340) + 2e4 32 fffffffd11cfd95c jni_CallStaticVoidMethod (1001222e0, 1400, 1c, ffffffff7d0ffde8, 100122000, 153d) + 5bc 33 fffffffd12c0603c JavaMain (ac8, 100123780, 100123798, 1, fffffffd12b605f0, fffffffd11cfd3a0) + 81c 34 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 216 ----------------- lwp# 18 / thread# 18 -------------------- 217 ffffffff7eae9b3c lwp_cond_wait (10078cd48, 10078cd30, 0, 0) 218 fffffffd12331a94 void os::PlatformEvent::park() (10078cd00, e6c40, e6c00, 0, fffffffd12adbf00, 10078cd30) + c4 219 fffffffd120c7b00 int JvmtiRawMonitor::SimpleWait(Thread*,long) (10078a470, 10079c000, ffffffffffffffff, fffffffd120c50e0, 1, 0) + 100 220 fffffffd120c8328 int JvmtiRawMonitor::raw_wait(long,bool,Thread*) (10078a470, ffffffffffffffff, 1, 10079c000, ffffffffffd880ac, fffffffd12adbf00) + d8 221 fffffffd120942ec jvmtiError JvmtiEnv::RawMonitorWait(JvmtiRawMonitor*,long) (4, 10078a470, ffffffffffffffff, 10079c000, 0, fffffffd12adbf00) + 5c 222 fffffffd0f8385bc debugMonitorWait (fffffffd0f946268, c10, c00, fffffffd0f945580, fffffffd0f946190, 0) + 3c 223 fffffffd0f81adac debugInit_waitVMInitComplete (0, f28, fffffffd0f945580, c00, fffffffd0f844888, 1) + 3c 224 fffffffd0f81caac debugLoop_run (105c00, f50, fffffffd0f945580, 1, fffffffd0f9464d0, 0) + 6c 225 fffffffd0f8335b4 connectionInitiated (fffffffd0f705250, 1000, 1, fffffffd0f945580, fffffffd0f9468d8, 0) + e4 226 fffffffd0f833800 acceptThread (0, fffffffd0f705260, 1007973c0, fffffffd0f843de0, fffffffd0f945580, fffffffd0f946190) + 110 227 fffffffd120c0934 void JvmtiAgentThread::call_start_function() (10079c000, 0, 0, fffffffd12adbf00, fffffffd12b78f38, 0) + 1b4 228 fffffffd125445fc void JavaThread::thread_main_inner() (10079c000, 3d8, 1005bd3f8, 1005bd020, ffffffff48cffbb8, fffffffd12bb62a0) + 8c 229 fffffffd12544534 void JavaThread::run() (10079c000, b, 12, 62cb92b48, 0, 22) + 4a4 230 fffffffd12324ca0 thread_native_entry (0, 10079c000, 0, 10079c9d0, fffffffd12adbf00, 50dc) + 320 231 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 232 ----------------- lwp# 19 / thread# 19 -------------------- 233 ffffffff7eae9b3c lwp_cond_wait (10079f748, 10079f730, 0, 0) 234 fffffffd12331a94 void os::PlatformEvent::park() (10079f700, e6c40, e6c00, 0, fffffffd12adbf00, 10079f730) + c4 235 fffffffd120c7b00 int JvmtiRawMonitor::SimpleWait(Thread*,long) (10079e4b0, 10079e800, ffffffffffffffff, fffffffd120c50e0, 1, 0) + 100 236 fffffffd120c8328 int JvmtiRawMonitor::raw_wait(long,bool,Thread*) (10079e4b0, ffffffffffffffff, 1, 10079e800, ffffffffffd880ac, fffffffd12adbf00) + d8 237 fffffffd120942ec jvmtiError JvmtiEnv::RawMonitorWait(JvmtiRawMonitor*,long) (4, 10079e4b0, ffffffffffffffff, 10079e800, 0, fffffffd12adbf00) + 5c 238 fffffffd0f8385bc debugMonitorWait (fffffffd0f946268, c10, c00, fffffffd0f945580, fffffffd0f946190, 0) + 3c 239 fffffffd0f8261f8 doBlockCommandLoop (800, 1028, fffffffd0f945580, 1000, fffffffd0f945580, 0) + 48 240 fffffffd0f826448 commandLoop (c10, 10079eae0, 1, fffffffd0f945580, fffffffd0f94612c, 1007a0a20) + f8 241 fffffffd120c0934 void JvmtiAgentThread::call_start_function() (10079e800, 0, 0, fffffffd12adbf00, fffffffd12b78f38, 0) + 1b4 242 fffffffd125445fc void JavaThread::thread_main_inner() (10079e800, 3d8, 1005c1a78, 1005c16a0, ffffffff48affb38, fffffffd12bb62a0) + 8c 243 fffffffd12544534 void JavaThread::run() (10079e800, c, 13, 62cb92d50, 0, 18) + 4a4 244 fffffffd12324ca0 thread_native_entry (0, 10079e800, 0, 10079d0e0, fffffffd12adbf00, 50dc) + 320 245 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) Below is a full pstack dump. Thanks, Serguei 1 20700: /var/tmp/sspitsyn/jdk-ibm/build/solaris-sparcv9-normal-server-release/ 2 ----------------- lwp# 1 / thread# 1 -------------------- 3 ffffffff7eae9a88 lwp_wait (2, ffffffff7fffe45c) 4 ffffffff7eae0ce0 _thrp_join (2, 0, ffffffff7fffe5c0, 1, 0, ffffffff7fffe5cc) + 3c 5 ffffffff7eae0e4c thr_join (2, 0, ffffffff7fffe5c0, ffffffff7fffe680, 0, 3) + 14 6 fffffffd12c104a0 ContinueInNewThread0 (fffffffd12c05820, 100000, ffffffff7fffe680, fffffffffffffff8, 0, 100000) + 30 7 fffffffd12c0e090 ContinueInNewThread (ffffffff7fffe8a8, fffffffd11d27440, 111000, ffffffffffeeef60, fffffffd11d26de0, fffffffd11d27a30) + 90 8 fffffffd12c1052c JVMInit (ffffffff7fffe8a8, 0, 1, 100102f38, 1, 100105760) + 2c 9 fffffffd12c057e8 JLI_Launch (b08, ffffffffffeff2a0, 0, 0, 0, 0) + 2f8 10 0000000100000efc main (6, ffffffff7ffff6b8, 6, ffffffff7ee00140, 100000f80, 100000f80) + 1bc 11 0000000100000d08 _start (0, 0, 0, 0, 0, 100101040) + 108 12 ----------------- lwp# 2 / thread# 2 -------------------- 13 ffffffff7eae9b3c lwp_cond_wait (100123448, 100123430, 0, 0) 14 fffffffd12331a94 void os::PlatformEvent::park() (100123400, e6c40, e6c00, 0, fffffffd12adbf00, 100123430) + c4 15 fffffffd122c6038 int Monitor::IWait(Thread*,long) (100122f30, 100122000, 0, fffffffd12b4dba8, 0, 100122f50) + 98 16 fffffffd122c6a4c bool Monitor::wait(bool,long,bool) (100122f30, 1, 0, 0, ffff2155, 100122000) + 7c 17 fffffffd125464e8 int JavaThread::java_suspend_self() (100122000, 1, 40000000, 1001220b8, 100122f30, 100122f30) + a8 18 fffffffd120c84a4 int JvmtiRawMonitor::raw_wait(long,bool,Thread*) (10079e3b0, 10079e430, 1, 100122000, 94400, fffffffd12b70600) + 254 19 fffffffd120942ec jvmtiError JvmtiEnv::RawMonitorWait(JvmtiRawMonitor*,long) (4, 10079e3b0, ffffffffffffffff, 100122000, 0, fffffffd12adbf00) + 5c 20 fffffffd0f8385bc debugMonitorWait (fffffffd0f946268, c10, c00, fffffffd0f945580, fffffffd0f945580, 0) + 3c 21 fffffffd0f825140 enqueueCommand (1007a0a20, ffffffffffefc418, 103800, ffffffffffefc3e8, 0, fffffffd0f945580) + 140 22 fffffffd0f826e58 eventHelper_reportEvents (0, 10079a000, 0, 1007a0a20, 1, 1) + 108 23 fffffffd0f81b4c0 initialize (1001222e0, c00, 4, fffffffd0f83edc0, fffffffd0f9460d0, fffffffd0f945580) + 540 24 fffffffd0f81a77c cbEarlyException (fffffffd0f946190, 1001222e0, 1005953a0, fffffffd0f83eaa0, fffffffd0f946268, 1005953a8) + 21c 25 fffffffd120af6a4 void JvmtiExport::post_exception_throw(JavaThread*,Method*,unsigned char*,oopDesc*) (100122000, fffffffd12b78f38, 100764b40, 62cb91b50, 100122d48, fffffffd12b7a618) + 15b4 26 fffffffd11c27484 unsigned char*InterpreterRuntime::exception_handler_for_exception(JavaThread*,oopDesc*) (0, ffffffff4a0014e0, 100122000, ffffffff4a001470, 100122d40, fffffffd12adbf00) + 704 27 ffffffff6100eac0 * JITDebug.debugTarget()V+29 28 ffffffff61009ecc * JITDebug.parseArgs([Ljava/lang/String;)Z+50 29 ffffffff610084ac * JITDebug.main([Ljava/lang/String;)V+8 30 ffffffff610003c0 ???????? (ffffffff7d0ffc20, ffffffff7d0ffe30, a, ffffffff4a000f18, ffffffff6100ff40, ffffffff7d0ffd78) + fff8006cc46de0b0 31 fffffffd11c43134 void JavaCalls::call_helper(JavaValue*,const methodHandle&,JavaCallArguments*,Thread*) (ffffffff7d0ffe28, ffffffff4a000f18, ffffffff7d0ffd68, ffffffff7d0ffde8, e, ffffffff61000340) + 2e4 32 fffffffd11cfd95c jni_CallStaticVoidMethod (1001222e0, 1400, 1c, ffffffff7d0ffde8, 100122000, 153d) + 5bc 33 fffffffd12c0603c JavaMain (ac8, 100123780, 100123798, 1, fffffffd12b605f0, fffffffd11cfd3a0) + 81c 34 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 35 ----------------- lwp# 3 / thread# 3 -------------------- 36 ffffffff7eae4bb4 lwp_park (0, 0, 0) 37 ffffffff7eacbfe8 sem_wait (100133690, fffffffd12adbf00, ffffffffffc80f70, 37f000, e6ce0, ffffffffffffffff) + 24 38 fffffffd124309f8 void PosixSemaphore::wait() (100133690, 986e0, fffffffd12b4df8a, 98400, fffffffd12adbf00, fffffffd12adbf00) + 8 39 fffffffd12650754 WorkData SemaphoreGangTaskDispatcher::worker_wait_for_task() (100133650, 7f, 98c00, 0, 72000, fffffffd12adbf00) + 4 40 fffffffd1264f4c8 void GangWorker::loop() (100135800, fffffffd12650750, fffffffd12b9b4b8, 100104ae0, fffffffd1264f290, fffffffd12b9b3e0) + 18 41 fffffffd12324ca0 thread_native_entry (0, 100135800, 0, 100136a70, fffffffd12adbf00, 50dc) + 320 42 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 43 ----------------- lwp# 4 / thread# 4 -------------------- 44 ffffffff7eae9b3c lwp_cond_wait (100278348, 100278330, 0, 0) 45 fffffffd12331a94 void os::PlatformEvent::park() (100278300, e6c40, e6c00, 0, fffffffd12adbf00, 100278330) + c4 46 fffffffd122c6038 int Monitor::IWait(Thread*,long) (10011ee30, 100277000, 0, fffffffd12b4dba8, 0, 10011ee50) + 98 47 fffffffd122c6a4c bool Monitor::wait(bool,long,bool) (10011ee30, 1, 0, 0, fffffffd12b70500, 100277000) + 7c 48 fffffffd11ac67b4 void G1ConcurrentMarkThread::run_service() (100277000, 94600, 94600, fffffffd12adbf00, 10012deb0, 1001312e0) + 134 49 fffffffd119a7654 void ConcurrentGCThread::run() (94600, 94400, 0, 100277000, fffffffd12adbf00, fffffffd12b70500) + d4 50 fffffffd12324ca0 thread_native_entry (0, 100277000, 0, 100278590, fffffffd12adbf00, 50dc) + 320 51 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 52 ----------------- lwp# 5 / thread# 5 -------------------- 53 ffffffff7eae4bb4 lwp_park (0, 0, 0) 54 ffffffff7eacbfe8 sem_wait (100133990, fffffffd12adbf00, ffffffffffc80f70, 37f000, e6ce0, ffffffffffffffff) + 24 55 fffffffd124309f8 void PosixSemaphore::wait() (100133990, 986e0, fffffffd12b4df8a, 98400, fffffffd12adbf00, fffffffd12adbf00) + 8 56 fffffffd12650754 WorkData SemaphoreGangTaskDispatcher::worker_wait_for_task() (100133950, 7f, 98c00, 0, 72000, fffffffd12adbf00) + 4 57 fffffffd1264f4c8 void GangWorker::loop() (100278800, fffffffd12650750, fffffffd12b9b4b8, 100104d60, fffffffd1264f290, fffffffd12b9b3e0) + 18 58 fffffffd12324ca0 thread_native_entry (0, 100278800, 0, 100279f30, fffffffd12adbf00, 50dc) + 320 59 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 60 ----------------- lwp# 6 / thread# 6 -------------------- 61 ffffffff7eae9b3c lwp_cond_wait (1003f4f48, 1003f4f30, 0, 0) 62 fffffffd12331a94 void os::PlatformEvent::park() (1003f4f00, e6c40, e6c00, 0, fffffffd12adbf00, 1003f4f30) + c4 63 fffffffd122c6038 int Monitor::IWait(Thread*,long) (10011f340, 1003f4000, 0, fffffffd12b4dba8, 0, 10011f360) + 98 64 fffffffd122c6a4c bool Monitor::wait(bool,long,bool) (10011f340, 1, 0, 0, fffffffd12adbf00, 1003f4000) + 7c 65 fffffffd11aca248 void G1ConcurrentRefineThread::run_service() (1003f4000, d5400, 0, fffffffd12b7b558, fffffffd12adbf00, fffffffd12bb1490) + a8 66 fffffffd119a7654 void ConcurrentGCThread::run() (94600, 94400, 0, 1003f4000, fffffffd12adbf00, fffffffd12b70500) + d4 67 fffffffd12324ca0 thread_native_entry (0, 1003f4000, 0, 1003f5220, fffffffd12adbf00, 50dc) + 320 68 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 69 ----------------- lwp# 7 / thread# 7 -------------------- 70 ffffffff7eae9b3c lwp_cond_wait (1003f6848, 1003f6830, ffffffff784ffaa0, 0) 71 ffffffff7eabf548 _lwp_cond_timedwait (1003f6848, 1003f6830, ffffffff784ffb70, e6c00, ffffffff7eabf528, ffffffff784ffaa0) + 20 72 fffffffd12331d30 int os::PlatformEvent::park(long) (1003f6800, 11a1d310, ffffffff7eabf38c, e6c00, 0, fffffffd12adbf00) + 200 73 fffffffd122c60b8 int Monitor::IWait(Thread*,long) (1003f5ac8, 1003f5800, 12c, fffffffd12b4dba8, fffffffd12adbf00, 1003f5ae8) + 118 74 fffffffd122c6a4c bool Monitor::wait(bool,long,bool) (1003f5ac8, 1, 12c, 0, 10011eec0, 1003f5800) + 7c 75 fffffffd11b3a340 void G1YoungRemSetSamplingThread::run_service() (1003f5800, 0, 0, fffffffd12adbf00, fffffffd12b4e4c8, fffffffd12b4c6c8) + 130 76 fffffffd119a7654 void ConcurrentGCThread::run() (94600, 94400, 0, 1003f5800, fffffffd12adbf00, fffffffd12b70500) + d4 77 fffffffd12324ca0 thread_native_entry (0, 1003f5800, 0, 1003f6ae0, fffffffd12adbf00, 50dc) + 320 78 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 79 ----------------- lwp# 8 / thread# 8 -------------------- 80 ffffffff7eae9b3c lwp_cond_wait (100592a48, 100592a30, ffffffff782ff890, 0) 81 ffffffff7eabf548 _lwp_cond_timedwait (100592a48, 100592a30, ffffffff782ff960, e6c00, ffffffff7eabf528, ffffffff782ff890) + 20 82 fffffffd12331d30 int os::PlatformEvent::park(long) (100592a00, df420d8, ffffffff7eabf38c, e6c00, 1, fffffffd12adbf00) + 200 83 fffffffd122c60b8 int Monitor::IWait(Thread*,long) (100120810, 100592000, 3e8, fffffffd12b4dba8, fffffffd12adbf00, 100120830) + 118 84 fffffffd122c6a4c bool Monitor::wait(bool,long,bool) (100120810, 1, 3e8, 0, 945d8, 100592000) + 7c 85 fffffffd125f1820 void VMThread::loop() (100592000, fffffffd12be34a0, 1001208a0, 0, fffffffd12adbf00, fffffffd12b704d8) + 150 86 fffffffd125f10a8 void VMThread::run() (100592000, 94400, 0, fffffffd12adbf00, 7f, fffffffd12b98368) + 98 87 fffffffd12324ca0 thread_native_entry (0, 100592000, 0, 100592d50, fffffffd12adbf00, 50dc) + 320 88 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 89 ----------------- lwp# 9 / thread# 9 -------------------- 90 ffffffff7eae9b3c lwp_cond_wait (10059d948, 10059d930, 0, 0) 91 fffffffd12331a94 void os::PlatformEvent::park() (10059d900, e6c40, e6c00, 0, fffffffd12adbf00, 10059d930) + c4 92 fffffffd122c6038 int Monitor::IWait(Thread*,long) (100120ed0, 10059c800, 0, fffffffd12b4dba8, 0, 100120ef0) + 98 93 fffffffd122c6cf4 bool Monitor::wait(bool,long,bool) (100120ed0, 0, 0, 0, fffffffd12adbf00, 10059c800) + 324 94 fffffffd11dfb040 JVM_WaitForReferencePendingList (0, 10059c800, fffffffd12b4da28, 0, fffffffd12adbf00, fffffffd12b7ce98) + 1d0 95 fffffffd10c15e24 Java_java_lang_ref_Reference_waitForReferencePendingList (10059cae0, ffffffff780ff280, 1, 0, 9d0f0, 0) + 4 96 ffffffff6101170c * java/lang/ref/Reference.waitForReferencePendingList()V+-23864 97 ffffffff610116ac * java/lang/ref/Reference.waitForReferencePendingList()V+-14600 98 ffffffff61009ecc * java/lang/ref/Reference.processPendingReferences()V+0 99 ffffffff61009ecc * java/lang/ref/Reference.access$000()V+0 100 ffffffff61009ecc * java/lang/ref/Reference$ReferenceHandler.run()V+0 101 ffffffff610003c0 ???????? (ffffffff780ff780, ffffffff780ffb38, a, ffffffff49d55fa0, ffffffff6100ff40, ffffffff780ff9f8) + fff8006cc46de0b0 102 fffffffd11c43134 void JavaCalls::call_helper(JavaValue*,const methodHandle&,JavaCallArguments*,Thread*) (ffffffff780ffb30, ffffffff49d55fa0, ffffffff780ff9e8, ffffffff780ff890, e, ffffffff61000340) + 2e4 103 fffffffd11c42550 void JavaCalls::call_virtual(JavaValue*,Klass*,Symbol*,Symbol*,JavaCallArguments*,Thread*) (ffffffff780ffb30, e99000, ffffffff780ff890, ffffffff780ff900, ffffffff780ff9e8, ffffffffff166f50) + 120 104 fffffffd11c425d0 void JavaCalls::call_virtual(JavaValue*,Handle,Klass*,Symbol*,Symbol*,Thread*) (ffffffff780ffb30, 10059d300, 800006770, 8, 1, 2) + 50 105 fffffffd11df31e8 void thread_entry(JavaThread*,Thread*) (10059c800, 9f800, 103c00, 62ca09090, fffffffd12b7b8f0, 193400) + d8 106 fffffffd125445fc void JavaThread::thread_main_inner() (10059c800, 3d8, 10059d2d8, 10059cf00, ffffffff780ffc38, fffffffd12bb62a0) + 8c 107 fffffffd12544534 void JavaThread::run() (10059c800, 2, 9, 62ca09090, 72, 11) + 4a4 108 fffffffd12324ca0 thread_native_entry (0, 10059c800, 0, 10059dd20, fffffffd12adbf00, 50dc) + 320 109 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 110 ----------------- lwp# 10 / thread# 10 -------------------- 111 ffffffff7eae9b3c lwp_cond_wait (1005a7548, 1005a7530, 0, 0) 112 fffffffd12331a94 void os::PlatformEvent::park() (1005a7500, e6c40, e6c00, 1, fffffffd12adbf00, 1005a7530) + c4 113 fffffffd122f27e8 void ObjectMonitor::wait(long,bool,Thread*) (1005a1f80, fffffffd128c10b0, fffffffd12b78ff0, 1, 1005a6800, 2) + 3d8 114 fffffffd124f4290 int ObjectSynchronizer::wait(Handle,long,Thread*) (1005a71a8, 0, 1005a6800, fffffffd12b64a32, 88b32, 1005a1f80) + 150 115 fffffffd11dc4150 JVM_MonitorWait (1005a71a8, 0, 0, 1005a6800, 2, fffffffd12b4da28) + 330 116 ffffffff6101170c * java/lang/Object.wait(J)V+-3184 117 ffffffff610116ac * java/lang/Object.wait(J)V+-3184 118 ffffffff61009ecc * java/lang/ref/ReferenceQueue.remove(J)Ljava/lang/ref/Reference;+59 119 ffffffff61009a38 * java/lang/ref/ReferenceQueue.remove()Ljava/lang/ref/Reference;+2 120 ffffffff61009a38 * java/lang/ref/Finalizer$FinalizerThread.run()V+37 121 ffffffff610003c0 ???????? (ffffffff702ff700, ffffffff702ffab8, a, ffffffff49d5c150, ffffffff6100ff40, ffffffff702ff978) + fff8006cc46de0b0 122 fffffffd11c43134 void JavaCalls::call_helper(JavaValue*,const methodHandle&,JavaCallArguments*,Thread*) (ffffffff702ffab0, ffffffff49d5c150, ffffffff702ff968, ffffffff702ff810, e, ffffffff61000340) + 2e4 123 fffffffd11c42550 void JavaCalls::call_virtual(JavaValue*,Klass*,Symbol*,Symbol*,JavaCallArguments*,Thread*) (ffffffff702ffab0, e99000, ffffffff702ff810, ffffffff702ff880, ffffffff702ff968, ffffffffff166f50) + 120 124 fffffffd11c425d0 void JavaCalls::call_virtual(JavaValue*,Handle,Klass*,Symbol*,Symbol*,Thread*) (ffffffff702ffab0, 1005a71a0, 800006770, 8, 1, 2) + 50 125 fffffffd11df31e8 void thread_entry(JavaThread*,Thread*) (1005a6800, 9f800, 103c00, 62ca09668, fffffffd12b7b8f0, 193400) + d8 126 fffffffd125445fc void JavaThread::thread_main_inner() (1005a6800, 3d8, 1005a7178, 1005a6da0, ffffffff702ffbb8, fffffffd12bb62a0) + 8c 127 fffffffd12544534 void JavaThread::run() (1005a6800, 3, a, 62ca09668, 72, 9) + 4a4 128 fffffffd12324ca0 thread_native_entry (0, 1005a6800, 0, 1005a7bc0, fffffffd12adbf00, 50dc) + 320 129 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 130 ----------------- lwp# 11 / thread# 11 -------------------- 131 ffffffff7eae4bb4 lwp_park (0, 0, 0) 132 ffffffff7eacbfe8 sem_wait (1005908a0, fffffffd12bc75c0, eb6c0, eb400, 10648, ffffffffffffffff) + 24 133 fffffffd124309f8 void PosixSemaphore::wait() (1005908a0, 1005b9800, 10011ab64, 1005b9800, 98c10, 98c00) + 8 134 fffffffd1232961c int check_pending_signals() (1, fffffffd12b74b10, 1, fffffffd12adbf00, 20000000, ffffffff7d6008c0) + 24c 135 fffffffd12315aec void signal_thread_entry(JavaThread*,Thread*) (98c58, 1005b9800, 1005ba230, 1005ba220, 98c00, fffffffd12adbf00) + 2c 136 fffffffd125445fc void JavaThread::thread_main_inner() (1005b9800, 3d8, 1005ba208, 1005b9e30, ffffffff5faffb38, fffffffd12bb62a0) + 8c 137 fffffffd12544534 void JavaThread::run() (1005b9800, 4, b, 62ca20350, 72, 11) + 4a4 138 fffffffd12324ca0 thread_native_entry (0, 1005b9800, 0, 1005babc0, fffffffd12adbf00, 50dc) + 320 139 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 140 ----------------- lwp# 12 / thread# 12 -------------------- 141 ffffffff7eae9b3c lwp_cond_wait (1005bc748, 1005bc730, ffffffff5e6ff520, 0) 142 ffffffff7eabf548 _lwp_cond_timedwait (1005bc748, 1005bc730, ffffffff5e6ff5f0, e6c00, ffffffff7eabf528, ffffffff5e6ff520) + 20 143 fffffffd12331d30 int os::PlatformEvent::park(long) (1005bc700, 20e2bf38, ffffffff7eabf38c, e6c00, 5, fffffffd12adbf00) + 200 144 fffffffd122c60b8 int Monitor::IWait(Thread*,long) (100121620, 1005bb000, 1388, fffffffd12b4dba8, 1, 100121640) + 118 145 fffffffd122c6cf4 bool Monitor::wait(bool,long,bool) (100121620, 0, 1388, 0, 1, 1005bb000) + 324 146 fffffffd11984df0 CompileTask*CompileQueue::get() (100590960, 1005bac90, 0, 1005bb000, fffffffd12adbf00, 100121620) + 70 147 fffffffd11989c80 void CompileBroker::compiler_thread_loop() (71e29, 1005909e0, 1005bb000, fffffffd12adbf00, 100590960, ffffffff49e84e78) + 150 148 fffffffd125445fc void JavaThread::thread_main_inner() (1005bb000, 3d8, 1005bc018, 1005bbc40, ffffffff5e6ffab8, fffffffd12bb62a0) + 8c 149 fffffffd12544534 void JavaThread::run() (1005bb000, 5, c, 62ca20540, 0, 12) + 4a4 150 fffffffd12324ca0 thread_native_entry (0, 1005bb000, 0, 1005bca60, fffffffd12adbf00, 50dc) + 320 151 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 152 ----------------- lwp# 13 / thread# 13 -------------------- 153 ffffffff7eae9b3c lwp_cond_wait (1005bec48, 1005bec30, ffffffff5d2ff4a0, 0) 154 ffffffff7eabf548 _lwp_cond_timedwait (1005bec48, 1005bec30, ffffffff5d2ff570, e6c00, ffffffff7eabf528, ffffffff5d2ff4a0) + 20 155 fffffffd12331d30 int os::PlatformEvent::park(long) (1005bec00, 20f1f5c0, ffffffff7eabf38c, e6c00, 5, fffffffd12adbf00) + 200 156 fffffffd122c60b8 int Monitor::IWait(Thread*,long) (100121620, 1005bd800, 1388, fffffffd12b4dba8, 1, 100121640) + 118 157 fffffffd122c6cf4 bool Monitor::wait(bool,long,bool) (100121620, 0, 1388, 0, 1, 1005bd800) + 324 158 fffffffd11984df0 CompileTask*CompileQueue::get() (1005909a0, 1005bac20, 0, 1005bd800, fffffffd12adbf00, 100121620) + 70 159 fffffffd11989c80 void CompileBroker::compiler_thread_loop() (71e29, 100590a60, 1005bd800, fffffffd12adbf00, 1005909a0, ffffffff49c06ad8) + 150 160 fffffffd125445fc void JavaThread::thread_main_inner() (1005bd800, 3d8, 1005be5d8, 1005be200, ffffffff5d2ffa38, fffffffd12bb62a0) + 8c 161 fffffffd12544534 void JavaThread::run() (1005bd800, 7, d, 62ca20920, 0, 12) + 4a4 162 fffffffd12324ca0 thread_native_entry (0, 1005bd800, 0, 1005bf020, fffffffd12adbf00, 50dc) + 320 163 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 164 ----------------- lwp# 14 / thread# 14 -------------------- 165 ffffffff7eae9b3c lwp_cond_wait (1005c0948, 1005c0930, ffffffff54eff610, 0) 166 ffffffff7eabf548 _lwp_cond_timedwait (1005c0948, 1005c0930, ffffffff54eff6e0, e6c00, ffffffff7eabf528, ffffffff54eff610) + 20 167 fffffffd12331d30 int os::PlatformEvent::park(long) (1005c0900, 2040aef0, ffffffff7eabf38c, e6c00, 15180, fffffffd12adbf00) + 200 168 fffffffd122c60b8 int Monitor::IWait(Thread*,long) (10011fa00, 1005bf800, 5265c00, fffffffd12b4dba8, fffffffd12adbf00, 10011fa20) + 118 169 fffffffd122c6a4c bool Monitor::wait(bool,long,bool) (10011fa00, 1, 5265c00, 0, 945b8, 1005bf800) + 7c 170 fffffffd124ebc98 void NMethodSweeper::sweeper_loop() (fffffffd12b704b8, ffffffff7d600980, fffffffd12adbf00, 6, b, a) + 1b8 171 fffffffd125445fc void JavaThread::thread_main_inner() (1005bf800, 3d8, 1005c0298, 1005bfec0, ffffffff54eff9b8, fffffffd12bb62a0) + 8c 172 fffffffd12544534 void JavaThread::run() (1005bf800, 8, e, 62ca20b10, 0, e) + 4a4 173 fffffffd12324ca0 thread_native_entry (0, 1005bf800, 0, 1005c0ce0, fffffffd12adbf00, 50dc) + 320 174 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 175 ----------------- lwp# 15 / thread# 15 -------------------- 176 ffffffff7eae9b3c lwp_cond_wait (100766548, 100766530, 0, 0) 177 fffffffd12331a94 void os::PlatformEvent::park() (100766500, e6c40, e6c00, 0, fffffffd12adbf00, 100766530) + c4 178 fffffffd122c6038 int Monitor::IWait(Thread*,long) (10011fcd0, 100765800, 0, fffffffd12b4dba8, 0, 10011fcf0) + 98 179 fffffffd122c6a4c bool Monitor::wait(bool,long,bool) (10011fcd0, 1, 0, 0, fffffffd12b70648, 100765800) + 7c 180 fffffffd12431e00 void ServiceThread::service_thread_entry(JavaThread*,Thread*) (100765800, 100765800, 10011fcd0, 94400, fffffffd12b78f38, fffffffd12b4da28) + 210 181 fffffffd125445fc void JavaThread::thread_main_inner() (100765800, 3d8, 10075c258, 10075be80, ffffffff4caffd38, fffffffd12bb62a0) + 8c 182 fffffffd12544534 void JavaThread::run() (100765800, 9, f, 62cb820d8, 0, e) + 4a4 183 fffffffd12324ca0 thread_native_entry (0, 100765800, 0, 100766930, fffffffd12adbf00, 50dc) + 320 184 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 185 ----------------- lwp# 16 / thread# 16 -------------------- 186 ffffffff7eae9b3c lwp_cond_wait (10076b048, 10076b030, ffffffff4a6ffad0, 0) 187 ffffffff7eabf548 _lwp_cond_timedwait (10076b048, 10076b030, ffffffff4a6ffba0, e6c00, ffffffff7eabf528, ffffffff4a6ffad0) + 20 188 fffffffd12331d30 int os::PlatformEvent::park(long) (10076b000, 2748270, ffffffff7eabf38c, e6c00, 0, fffffffd12adbf00) + 200 189 fffffffd122c60b8 int Monitor::IWait(Thread*,long) (100121860, 10076a000, 32, fffffffd12b4dba8, fffffffd12adbf00, 100121880) + 118 190 fffffffd122c6a4c bool Monitor::wait(bool,long,bool) (100121860, 1, 32, 0, 1a6529b8c1ea88, 10076a000) + 7c 191 fffffffd12542e3c void WatcherThread::run() (10076a000, fffffffd12b70650, 32, 4, 2, 10076b2f0) + cc 192 fffffffd12324ca0 thread_native_entry (0, 10076a000, 0, 10076b2f0, fffffffd12adbf00, 50dc) + 320 193 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 194 ----------------- lwp# 17 / thread# 17 -------------------- 195 ffffffff7eae9b3c lwp_cond_wait (10076c648, 10076c630, ffffffff492febb0, 0) 196 ffffffff7eabf548 _lwp_cond_timedwait (10076c648, 10076c630, ffffffff492fec80, e6c00, ffffffff7eabf528, ffffffff492febb0) + 20 197 fffffffd12331d30 int os::PlatformEvent::park(long) (10076c600, 1f4cfc38, ffffffff7eabf38c, e6c00, 3c, fffffffd12adbf00) + 200 198 fffffffd122f27f8 void ObjectMonitor::wait(long,bool,Thread*) (1005a3e80, fffffffd128c10b0, fffffffd12b78ff0, 1, 10076b800, 2) + 3e8 199 fffffffd124f4290 int ObjectSynchronizer::wait(Handle,long,Thread*) (10076c328, ea60, 10076b800, fffffffd12b64a32, 88b32, 1005a3e80) + 150 200 fffffffd11dc4150 JVM_MonitorWait (10076c328, 0, ea60, 10076b800, 1, fffffffd12b4da28) + 330 201 ffffffff6101170c * java/lang/Object.wait(J)V+-3184 202 ffffffff610116ac * java/lang/Object.wait(J)V+-3184 203 ffffffff61009ecc * java/lang/ref/ReferenceQueue.remove(J)Ljava/lang/ref/Reference;+59 204 ffffffff61009a38 * jdk/internal/ref/CleanerImpl.run()V+65 205 ffffffff61009fc4 * java/lang/Thread.run()V+11 206 ffffffff61009ecc * jdk/internal/misc/InnocuousThread.run()V+20 207 ffffffff610003c0 ???????? (ffffffff492ff780, ffffffff492ffb38, a, ffffffff49eeec80, ffffffff6100ff40, ffffffff492ff9f8) + fff8006cc46de0b0 208 fffffffd11c43134 void JavaCalls::call_helper(JavaValue*,const methodHandle&,JavaCallArguments*,Thread*) (ffffffff492ffb30, ffffffff49eeec80, ffffffff492ff9e8, ffffffff492ff890, e, ffffffff61000340) + 2e4 209 fffffffd11c42550 void JavaCalls::call_virtual(JavaValue*,Klass*,Symbol*,Symbol*,JavaCallArguments*,Thread*) (ffffffff492ffb30, e99000, ffffffff492ff890, ffffffff492ff900, ffffffff492ff9e8, ffffffffff166f50) + 120 210 fffffffd11c425d0 void JavaCalls::call_virtual(JavaValue*,Handle,Klass*,Symbol*,Symbol*,Thread*) (ffffffff492ffb30, 10076c320, 800006770, 8, 1, 2) + 50 211 fffffffd11df31e8 void thread_entry(JavaThread*,Thread*) (10076b800, 9f800, 103c00, 62cb88700, fffffffd12b7b8f0, 193400) + d8 212 fffffffd125445fc void JavaThread::thread_main_inner() (10076b800, 3d8, 1005c2678, 1005c22a0, ffffffff492ffc38, fffffffd12bb62a0) + 8c 213 fffffffd12544534 void JavaThread::run() (10076b800, a, 11, 62cb88700, 0, e) + 4a4 214 fffffffd12324ca0 thread_native_entry (0, 10076b800, 0, 10076ccb0, fffffffd12adbf00, 50dc) + 320 215 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 216 ----------------- lwp# 18 / thread# 18 -------------------- 217 ffffffff7eae9b3c lwp_cond_wait (10078cd48, 10078cd30, 0, 0) 218 fffffffd12331a94 void os::PlatformEvent::park() (10078cd00, e6c40, e6c00, 0, fffffffd12adbf00, 10078cd30) + c4 219 fffffffd120c7b00 int JvmtiRawMonitor::SimpleWait(Thread*,long) (10078a470, 10079c000, ffffffffffffffff, fffffffd120c50e0, 1, 0) + 100 220 fffffffd120c8328 int JvmtiRawMonitor::raw_wait(long,bool,Thread*) (10078a470, ffffffffffffffff, 1, 10079c000, ffffffffffd880ac, fffffffd12adbf00) + d8 221 fffffffd120942ec jvmtiError JvmtiEnv::RawMonitorWait(JvmtiRawMonitor*,long) (4, 10078a470, ffffffffffffffff, 10079c000, 0, fffffffd12adbf00) + 5c 222 fffffffd0f8385bc debugMonitorWait (fffffffd0f946268, c10, c00, fffffffd0f945580, fffffffd0f946190, 0) + 3c 223 fffffffd0f81adac debugInit_waitVMInitComplete (0, f28, fffffffd0f945580, c00, fffffffd0f844888, 1) + 3c 224 fffffffd0f81caac debugLoop_run (105c00, f50, fffffffd0f945580, 1, fffffffd0f9464d0, 0) + 6c 225 fffffffd0f8335b4 connectionInitiated (fffffffd0f705250, 1000, 1, fffffffd0f945580, fffffffd0f9468d8, 0) + e4 226 fffffffd0f833800 acceptThread (0, fffffffd0f705260, 1007973c0, fffffffd0f843de0, fffffffd0f945580, fffffffd0f946190) + 110 227 fffffffd120c0934 void JvmtiAgentThread::call_start_function() (10079c000, 0, 0, fffffffd12adbf00, fffffffd12b78f38, 0) + 1b4 228 fffffffd125445fc void JavaThread::thread_main_inner() (10079c000, 3d8, 1005bd3f8, 1005bd020, ffffffff48cffbb8, fffffffd12bb62a0) + 8c 229 fffffffd12544534 void JavaThread::run() (10079c000, b, 12, 62cb92b48, 0, 22) + 4a4 230 fffffffd12324ca0 thread_native_entry (0, 10079c000, 0, 10079c9d0, fffffffd12adbf00, 50dc) + 320 231 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 232 ----------------- lwp# 19 / thread# 19 -------------------- 233 ffffffff7eae9b3c lwp_cond_wait (10079f748, 10079f730, 0, 0) 234 fffffffd12331a94 void os::PlatformEvent::park() (10079f700, e6c40, e6c00, 0, fffffffd12adbf00, 10079f730) + c4 235 fffffffd120c7b00 int JvmtiRawMonitor::SimpleWait(Thread*,long) (10079e4b0, 10079e800, ffffffffffffffff, fffffffd120c50e0, 1, 0) + 100 236 fffffffd120c8328 int JvmtiRawMonitor::raw_wait(long,bool,Thread*) (10079e4b0, ffffffffffffffff, 1, 10079e800, ffffffffffd880ac, fffffffd12adbf00) + d8 237 fffffffd120942ec jvmtiError JvmtiEnv::RawMonitorWait(JvmtiRawMonitor*,long) (4, 10079e4b0, ffffffffffffffff, 10079e800, 0, fffffffd12adbf00) + 5c 238 fffffffd0f8385bc debugMonitorWait (fffffffd0f946268, c10, c00, fffffffd0f945580, fffffffd0f946190, 0) + 3c 239 fffffffd0f8261f8 doBlockCommandLoop (800, 1028, fffffffd0f945580, 1000, fffffffd0f945580, 0) + 48 240 fffffffd0f826448 commandLoop (c10, 10079eae0, 1, fffffffd0f945580, fffffffd0f94612c, 1007a0a20) + f8 241 fffffffd120c0934 void JvmtiAgentThread::call_start_function() (10079e800, 0, 0, fffffffd12adbf00, fffffffd12b78f38, 0) + 1b4 242 fffffffd125445fc void JavaThread::thread_main_inner() (10079e800, 3d8, 1005c1a78, 1005c16a0, ffffffff48affb38, fffffffd12bb62a0) + 8c 243 fffffffd12544534 void JavaThread::run() (10079e800, c, 13, 62cb92d50, 0, 18) + 4a4 244 fffffffd12324ca0 thread_native_entry (0, 10079e800, 0, 10079d0e0, fffffffd12adbf00, 50dc) + 320 245 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) 246 ----------------- lwp# 20 / thread# 20 -------------------- 247 ffffffff7eae906c recv (7, ffffffff488ff7b4, 4, 0) 248 ffffffff7e40dba8 recv (7, ffff7fff, 4, 0, ffff7c00, 1007a1000) + 1c 249 fffffffd0f603f70 dbgsysRecv (7, ffffffff488ff7b4, 4, 0, 1007a1000, a0910) + 10 250 fffffffd0f6034e4 recv_fully (7, ffffffff488ff7b4, 4, a0800, 0, 0) + 24 251 fffffffd0f603634 socketTransport_readPacket (598, ffffffff488ff920, 100000, fffffffd0f704cb0, fffffffd0f604bb0, 0) + 54 252 fffffffd0f8341c0 transport_receivePacket (ffffffff488ff920, be8, 800, fffffffd0f945580, 10079a180, 1) + 30 253 fffffffd0f81cd30 reader (0, ffffffffffefa490, fffffffd0f945580, 105800, ffffffff488ff920, fffffffd0f83fa10) + 60 254 fffffffd120c0934 void JvmtiAgentThread::call_start_function() (1007a1000, 0, 0, fffffffd12adbf00, fffffffd12b78f38, 0) + 1b4 255 fffffffd125445fc void JavaThread::thread_main_inner() (1007a1000, 3d8, 1005c1e78, 1005c1aa0, ffffffff488ffab8, fffffffd12bb62a0) + 8c 256 fffffffd12544534 void JavaThread::run() (1007a1000, d, 14, 62cbeb9e8, 72, 13) + 4a4 257 fffffffd12324ca0 thread_native_entry (0, 1007a1000, 0, 1007a0ab0, fffffffd12adbf00, 50dc) + 320 258 ffffffff7eae4b38 _lwp_start (0, 0, 0, 0, 0, 0) On 4/23/18 17:02, serguei.spit...@oracle.com wrote: On 4/23/18 16:08, serguei.spit...@oracle.com wrote: Hi Andrew, There is a regression with this fix. The following test is failed with timeout on all platforms except Windows: Sorry, forgot to copy the test name: open/test/jdk/com/sun/jdi/JITDebug.sh Thanks, Serguei I'll try to get more details about this timeout. Thanks, Serguei On 4/18/18 09:49, serguei.spit...@oracle.com wrote: Hi Andrew, Sorry, I did not reply earlier. The fix need more testing. We also have some important tests in closed. I'll run them but I'm a little bit busy at the moment. You have two reviews which is enough for push after testing. Thanks, Serguei On 4/18/18 08:23, Andrew Leonard wrote: Hi Serguei, Do you need me to try anything else for this review? hotspot/jtreg/serviceability suite run successfully. Many Thanks Andrew Andrew Leonard Java Runtimes Development IBM Hursley IBM United Kingdom Ltd Phone internal: 245913, external: 01962 815913 internet email: andrew_m_leon...@uk.ibm.com From: "serguei.spit...@oracle.com" <serguei.spit...@oracle.com> To: daniel.daughe...@oracle.com, Andrew Leonard <andrew_m_leon...@uk.ibm.com> Cc: serviceability-dev@openjdk.java.net Date: 16/04/2018 07:10 Subject: Re: RFR: 8201409: JDWP debugger initialization hangs intermittently On 4/15/18 10:01, Daniel D. Daugherty wrote: On 4/13/18 3:07 PM, serguei.spit...@oracle.com wrote: Andrew and reviewers, I'm re-sending this RFR with a corrected subject that includes the bug number. The issues is: https://bugs.openjdk.java.net/browse/JDK-8201409 Webrev: http://cr.openjdk.java.net/~sspitsyn/webrevs/2018/8201409-jdwp-initsync.ibm.1/ src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c No comments. src/jdk.jdwp.agent/share/native/libjdwp/debugInit.h No comments. src/jdk.jdwp.agent/share/native/libjdwp/debugLoop.c So now pauses in debugLoop_run() before the loop that reads cmds. Looks good. src/jdk.jdwp.agent/share/native/libjdwp/eventHelper.c So the VM_INIT event handler now signals that we have received the VM_INIT event so that allows debugLoop_run() to proceed. Serguei, this fix needs to have the most of the Serviceability stack of tests run against it (jdwp, JVM/TI, JDI and jdb tests). Based on the email thread, I can't tell which tests have been run with the fix in place. Hi Dan, I'm going to sponsor this fix and will run all the debugger tests. Sorry that I did not announce it yet. Thanks, Serguei Dan The fix looks good to me. Also, I've agreed to skip a unit test as creating it for this issue is not easy. At least, one more review is needed before the fix can be pushed. Thanks, Serguei On 4/11/18 06:33, Andrew Leonard wrote: Hi Serguei, Thank you for raising the bug. I had a chat with one of my colleagues who could recreate it, and it's probably related to the handshaking that is done in the particular scenario. So with the JCK harness: com.sun.jck.lib.ExecJCKTestOtherJVMCmd LD_LIBRARY_PATH=/javatest/lib/jck /jck8b/natives/linux_x86-64 /projects/jck/jdwp/j2sdk-image/bin/java -Xdump:system:none -Xdump:system:events=gpf+abort+traceassert+corruptcache -Xdump:snap:none -Xdump:snap:events=gpf+abort+traceassert+corruptcache -Xdump:java:none -Xdump:java:events=gpf+abort+traceassert+corruptcache -Xdump:heap:none -Xdump:heap:events=gpf+abort+traceassert+corruptcache - Xfuture -agentlib:jdwp=server=y,transport=dt_socket,address=localhost :35000,suspend=y -classpath /javatest/lib/jck /JCK8b-b03/JCK-runtime-8b/classes -Djava.security.policy=/javatest/lib/jck /JCK8b-b03/JCK-runtime-8b/lib/jck.policy javasoft.sqe.jck.lib.jpda.jdwp.DebuggeeLoader -waittime=600 -msgSwitch=ub1604x64vm10:38636 -componentName= ArrayReference.GetValues.getvalues002 Note that the JCK test harness starts the target process, attaches to it, and sends the resume command in a very short time with no handshaking. That may not help..but hopefully helps explain things a bit? It's the timing of the resume command during the test that is crucial, resuming before the VM initialization is complete will trigger it. Thanks Andrew Andrew Leonard Java Runtimes Development IBM Hursley IBM United Kingdom Ltd Phone internal: 245913, external: 01962 815913 internet email: andrew_m_leon...@uk.ibm.com From: "serguei.spit...@oracle.com" <serguei.spit...@oracle.com> To: Andrew Leonard <andrew_m_leon...@uk.ibm.com> Cc: serviceability-dev@openjdk.java.net Date: 11/04/2018 09:57 Subject: Re: RFR: Fix race condition in jdwp Hi Andrew, I've filed the bug: https://bugs.openjdk.java.net/browse/JDK-8201409 Also, this is a webrev with your patch: http://cr.openjdk.java.net/~sspitsyn/webrevs/2018/8201409-jdwp-initsync.ibm.1/ I agree that creating a standalone test is tricky here. I've added usleep(10000) into the eventHelper_reportVMInit() and ran the JTreg com/sun/jdi tests with my JDK build. However, none of the tests failed with the failure mode you described. So that I'm puzzled a little bit. I suspect that some specific debugLoop commands were used in your scenario. It is still possible that I've missed something here. Will try to double check everything. Thanks, Serguei On 4/11/18 01:29, Andrew Leonard wrote: Thanks Serguei, I terms of a standalone testcase it is quite tricky, as due to the nature of the issue which took a lot of investigation to solve it's very timing dependent and will only occur randomly. It can be forced as I indicated below by adding a "sleep" in the VMInit report code but that's not a testcase, however the issue was originally found in our JCK testing for IBMJava8, testcase test.jck8b.runtime.vm.jdwp, but again only happened intermittently. Sort of like "performance" type issues we're not always going to be able to create a testcase that will always "fail" if the fix is not present. Your thoughts? Cheers Andrew Andrew Leonard Java Runtimes Development IBM Hursley IBM United Kingdom Ltd Phone internal: 245913, external: 01962 815913 internet email: andrew_m_leon...@uk.ibm.com From: "serguei.spit...@oracle.com" <serguei.spit...@oracle.com> To: Andrew Leonard <andrew_m_leon...@uk.ibm.com> Cc: serviceability-dev@openjdk.java.net Date: 11/04/2018 01:02 Subject: Re: RFR: Fix race condition in jdwp Hi Andrew, Okay, I'll file a bug on this topic. But do you have a standalone test demonstrating this issue? Thanks, Serguei On 4/10/18 06:23, Andrew Leonard wrote: Hi Serguei, I don't have access to the bug database to raise one, are you able to please? Summary: JDWP debugger initialization hangs intermittently Description: If during the JDWP setup initialization the VM initialization takes slightly longer than the main debug initialization thread a "hang" situation can occur. This has been seen in testcase test.jck8b.runtime.vm.jdwp and can also be recreated easily by adding a 10 second sleep to the beginning of the src/jdk.jdwp.agent/share/native/libjdwp/eventHelper.c method eventHelper_reportVMInit() . First seen: JDK8 Recreated: JDK11 Thanks Andrew Andrew Leonard Java Runtimes Development IBM Hursley IBM United Kingdom Ltd Phone internal: 245913, external: 01962 815913 internet email: andrew_m_leon...@uk.ibm.com From: "serguei.spit...@oracle.com" <serguei.spit...@oracle.com> To: Andrew Leonard <andrew_m_leon...@uk.ibm.com>, serviceability-dev@openjdk.java.net Date: 09/04/2018 23:03 Subject: Re: RFR: Fix race condition in jdwp Hi Andrew, The patch itself looks reasonable. However, in order to proceed with it, a bug report with a standalone test case demonstrating the issue is needed. Thanks, Serguei On 4/9/18 09:07, Andrew Leonard wrote: > Hi, > We discovered in our testing with OpenJ9 that a race condition can > occur in the jdwp under certain circumstances, and we were able to > force the same issue with Hotspot. Normally, the event helper thread > suspends all threads, then the debug loop in the listener thread > receives a command to resume. The debugger may deadlock if the debug > loop in the listener thread starts processing commands (e.g. resume > threads) before the event helper completes the initialization (and > suspends threads). > > This patch adds synchronization to ensure the event helper completes > the initialization sequence before debugger commands are processed. > > Please can I find a sponsor for this contribution? Patch below.. > > Many thanks > > Andrew > > > > diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c > b/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c > --- a/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c > +++ b/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights > reserved. > + * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights > reserved. > * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > * > * This code is free software; you can redistribute it and/or modify it > @@ -58,6 +58,7 @@ > static jboolean vmInitialized; > static jrawMonitorID initMonitor; > static jboolean initComplete; > +static jboolean VMInitComplete; > static jbyte currentSessionID; > > /* > @@ -617,6 +618,35 @@ > debugMonitorExit(initMonitor); > } > > +/* > + * Signal VM initialization is complete. > + */ > +void > +signalVMInitComplete(void) > +{ > + /* > + * VM Initialization is complete > + */ > + LOG_MISC(("signal VM initialization complete")); > + debugMonitorEnter(initMonitor); > + VMInitComplete = JNI_TRUE; > + debugMonitorNotifyAll(initMonitor); > + debugMonitorExit(initMonitor); > +} > + > +/* > + * Wait for VM initialization to complete. > + */ > +void > +debugInit_waitVMInitComplete(void) > +{ > + debugMonitorEnter(initMonitor); > + while (!VMInitComplete) { > + debugMonitorWait(initMonitor); > + } > + debugMonitorExit(initMonitor); > +} > + > /* All process exit() calls come from here */ > void > forceExit(int exit_code) > @@ -672,6 +702,7 @@ > LOG_MISC(("Begin initialize()")); > currentSessionID = 0; > initComplete = JNI_FALSE; > + VMInitComplete = JNI_FALSE; > > if ( gdata->vmDead ) { > EXIT_ERROR(AGENT_ERROR_INTERNAL,"VM dead at initialize() time"); > diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.h > b/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.h > --- a/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.h > +++ b/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.h > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights > reserved. > + * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights > reserved. > * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > * > * This code is free software; you can redistribute it and/or modify it > @@ -39,4 +39,7 @@ > void debugInit_exit(jvmtiError, const char *); > void forceExit(int); > > +void debugInit_waitVMInitComplete(void); > +void signalVMInitComplete(void); > + > #endif > diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/debugLoop.c > b/src/jdk.jdwp.agent/share/native/libjdwp/debugLoop.c > --- a/src/jdk.jdwp.agent/share/native/libjdwp/debugLoop.c > +++ b/src/jdk.jdwp.agent/share/native/libjdwp/debugLoop.c > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights > reserved. > + * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights > reserved. > * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > * > * This code is free software; you can redistribute it and/or modify it > @@ -98,6 +98,7 @@ > standardHandlers_onConnect(); > threadControl_onConnect(); > > + debugInit_waitVMInitComplete(); > /* Okay, start reading cmds! */ > while (shouldListen) { > if (!dequeue(&p)) { > diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/eventHelper.c > b/src/jdk.jdwp.agent/share/native/libjdwp/eventHelper.c > --- a/src/jdk.jdwp.agent/share/native/libjdwp/eventHelper.c > +++ b/src/jdk.jdwp.agent/share/native/libjdwp/eventHelper.c > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights > reserved. > + * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights > reserved. > * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > * > * This code is free software; you can redistribute it and/or modify it > @@ -580,6 +580,7 @@ > (void)threadControl_suspendThread(command->thread, JNI_FALSE); > } > > + signalVMInitComplete(); > outStream_initCommand(&out, uniqueID(), 0x0, > JDWP_COMMAND_SET(Event), > JDWP_COMMAND(Event, Composite)); > > > > Andrew Leonard > Java Runtimes Development > IBM Hursley > IBM United Kingdom Ltd > Phone internal: 245913, external: 01962 815913 > internet email: andrew_m_leon...@uk.ibm.com > > > Unless stated otherwise above: > IBM United Kingdom Limited - Registered in England and Wales with > number 741598. > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU