how to bring jvm to safepoint

David Holmes David.Holmes at oracle.com
Fri Jul 30 00:04:27 PDT 2010


Sorry Tony I keep forgetting that I don't have a way to decode a crash 
log from a VM that you built yourself. :( However you may be able to 
decode it yourself please see:

http://blogs.sun.com/dave/entry/a_tool_to_decode_hs

for a perl script.

That said looking at the actual assertion failure I am guessing that you 
initiated the VM operation from code where a No_Safepoint_verifier is 
active.

David

Tony Guan said the following on 07/30/10 15:58:
> Hi David,
> 
> Thanks a lot!
> 
> I am copying the content to below, and for convenience, the full log
> file is attached.
> 
> cat hs_err_pid30894.log
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> #  Internal Error
> (/home/tony/software/OpenJDK/jdk7/hotspot/src/share/vm/runtime/thread.cpp:777),
> pid=30894, tid=1082374480
> #  Error: Possible safepoint reached by thread that does not allow it
> #
> # JRE version: 7.0
> # Java VM: OpenJDK 64-Bit Server VM (17.0-b07291505-internal-debug
> mixed mode linux-amd64 )
> # If you would like to submit a bug report, please visit:
> #   http://java.sun.com/webapps/bugreport/crash.jsp
> #
> 
> ---------------  T H R E A D  ---------------
> 
> Current thread (0x00000000012ed000):  JavaThread "RMI TCP
> Connection(idle)" daemon [_thread_in_Java, id=30929,
> stack(0x000000004073b000,0x000000004083c000)]
> 
> Stack: [0x000000004073b000,0x000000004083c000],
> sp=0x0000000040839d60,  free space=3fb0000000000000000k
> Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
> V  [libjvm.so+0x8cad18]
> V  [libjvm.so+0x8cbe38]
> V  [libjvm.so+0x4039f1]
> V  [libjvm.so+0x87a183]
> V  [libjvm.so+0x8e1127]
> V  [libjvm.so+0x4d52ab]
> V  [libjvm.so+0x7ee63d]
> j  sun.misc.Unsafe.park(ZJ)V+0
> j  java.util.concurrent.locks.LockSupport.parkNanos(Ljava/lang/Object;J)V+20
> j  java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;ZJ)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;+174
> j  java.util.concurrent.SynchronousQueue$TransferStack.transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;+102
> j  java.util.concurrent.SynchronousQueue.poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+11
> j  java.util.concurrent.ThreadPoolExecutor.getTask()Ljava/lang/Runnable;+141
> j  java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+17
> j  java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5
> j  java.lang.Thread.run()V+11
> v  ~StubRoutines::call_stub
> V  [libjvm.so+0x555ecc]
> V  [libjvm.so+0x747a34]
> V  [libjvm.so+0x554b55]
> V  [libjvm.so+0x5551f0]
> V  [libjvm.so+0x5553cc]
> V  [libjvm.so+0x5be6cd]
> V  [libjvm.so+0x879869]
> V  [libjvm.so+0x87c1b5]
> V  [libjvm.so+0x750455]
> ....
> (above is the stack, please see the attachment for more information)
> 
> Tony (Xiaohua Guan)
> 
> 
> 
> On Thu, Jul 29, 2010 at 8:07 PM, David Holmes <David.Holmes at oracle.com> wrote:
>> Tony,
>>
>> I don't see anything obviously wrong with what you attempted. Can you show
>> the full stack dump from the error.
>>
>> David Holmes
>>
>> Tony Guan said the following on 07/30/10 07:29:
>>> Dear all,
>>>
>>> I want to invoke the GC at a certain time, for example, when a certain
>>> method is called at runtime, so I created a new subtype of
>>> VM_GC_Operation class, and initialized it with an object op, finally,
>>> executed using:VMThread::execute(&op)
>>>
>>> then I got the following error message:
>>>
>>> #  Internal Error
>>>
>>> (/home/tony/software/OpenJDK/jdk7/hotspot/src/share/vm/runtime/thread.cpp:777),
>>> pid=29652, tid=1096460624
>>> #  Error: Possible safepoint reached by thread that does not allow it
>>>
>>> The reason for the fail is that
>>> Thread::check_for_valid_safepoint_state() didn't pass because the
>>> currentThread is not a VMThread.
>>>
>>> My question is: how do I bring the current thread to a safepoint? or
>>> how do I call a GC operation properly? is there any prerequisite for
>>> doing so?
>>>
>>> Thanks!
>>>
>>> Tony (Xiaohua Guan)
>>


More information about the hotspot-runtime-dev mailing list