[11u] RFR: 8258414: OldObjectSample events too expensive

Aleksey Shipilev shade at redhat.com
Thu Apr 22 09:32:58 UTC 2021


On 4/22/21 11:19 AM, Doerr, Martin wrote:
> Hi,
> 
> it did not only break the debug build.
> 
> We have seen a crash on Windows:
> #  Internal Error (./src/hotspot/share/runtime/safepoint.cpp:894), pid=11412, tid=12932
> #  fatal error: Deadlock in safepoint code.  Should have called back to the VM before blocking.
> 
> V  [jvm.dll+0x247c64]  report_fatal+0x64  (debug.cpp:268)
> V  [jvm.dll+0x65e30b]  SafepointSynchronize::block+0x14b  (safepoint.cpp:893)
> V  [jvm.dll+0x101d44]  SafepointMechanism::block_if_requested+0x34  (safepointmechanism.inline.hpp:73)
> V  [jvm.dll+0x6f0d9a]  JavaThread::check_safepoint_and_suspend_for_native_trans+0xca  (thread.cpp:2508)
> V  [jvm.dll+0x5e3175]  ObjectSampleCheckpoint::on_rotation+0xa5  (objectsamplecheckpoint.cpp:301)
> V  [jvm.dll+0x397694]  JfrRecorderService::pre_safepoint_write+0x64  (jfrrecorderservice.cpp:428)
> V  [jvm.dll+0x3978a4]  JfrRecorderService::rotate+0x194  (jfrrecorderservice.cpp:325)
> V  [jvm.dll+0x398324]  recorderthread_entry+0xd4  (jfrrecorderthreadloop.cpp:76)
> V  [jvm.dll+0x6f7649]  JavaThread::run+0x139  (thread.cpp:1840)
> V  [jvm.dll+0x6f06b4]  Thread::call_run+0x84  (thread.cpp:391)
> V  [jvm.dll+0x5f8e36]  thread_native_entry+0xd6  (os_windows.cpp:460)
> 
> Test:
> jdk/jfr/startupargs/TestOldObjectQueueSize.java

Even on Linux, there are lots of jdk_jfr test failures:

    TEST                                              TOTAL  PASS  FAIL ERROR
 >> jtreg:test/jdk/jdk/jfr                              441   387    54     0 <<


Mostly failing like this:

#  Internal Error 
(/home/shade/trunks/jdk-updates-jdk11u-dev/src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.cpp:298), 
pid=2199952, tid=2200076
#  assert(SafepointSynchronize::is_at_safepoint()) failed: must be at safepoint!

Stack: [0x00007f7cbd920000,0x00007f7cbda21000],  sp=0x00007f7cbda1f700,  free space=1021k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native 
code)
V  [libjvm.so+0x1b836c7]  VMError::report_and_die(int, char const*, char const*, __va_list_tag*, 
Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x397
V  [libjvm.so+0x1b845e5]  VMError::report_and_die(Thread*, void*, char const*, int, char const*, 
char const*, __va_list_tag*)+0x35
V  [libjvm.so+0xc3d7aa]  report_vm_error(char const*, int, char const*, char const*, ...)+0x10a
V  [libjvm.so+0x1645973]  ObjectSampleCheckpoint::on_rotation(ObjectSampler const*)+0x893
V  [libjvm.so+0x1093c45]  JfrRecorderService::pre_safepoint_write()+0x255
V  [libjvm.so+0x1093e9c]  JfrRecorderService::write()+0xcc
V  [libjvm.so+0x1094242]  JfrRecorderService::finalize_current_chunk()+0x22
V  [libjvm.so+0x10948b0]  JfrRecorderService::rotate(int)+0x370
V  [libjvm.so+0x1096492]  recorderthread_entry(JavaThread*, Thread*)+0x162
V  [libjvm.so+0x1ab7d92]  JavaThread::thread_main_inner()+0x252
V  [libjvm.so+0x1ab0e8b]  Thread::call_run()+0x7b
V  [libjvm.so+0x1694806]  thread_native_entry(Thread*)+0x116


David, Jaroslav, you have to run the targeted subsystem tests when doing a backport like this!

-- 
Thanks,
-Aleksey



More information about the jdk-updates-dev mailing list