how to bring jvm to safepoint

Tony Guan guanxiaohua at gmail.com
Thu Jul 29 22:58:52 PDT 2010


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)
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hs_err_pid30894.log
Type: application/octet-stream
Size: 17808 bytes
Desc: not available
Url : http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20100730/56944ecd/attachment-0001.obj 


More information about the hotspot-runtime-dev mailing list