UseG1GC unimplemented in generate_Reference_get_entry()?

John Cuthbertson john.cuthbertson at oracle.com
Tue Sep 11 09:23:29 PDT 2012


Hi Leon,

I don't know Zero but all that's needed for this interpreter entry point 
is to generate the code to call G1's pre-write barrier with the referent 
value that is being loaded from the java.lang.ref.Reference object (i.e. 
the value that is returned). We need to record the referent value in an 
SATB buffer to preserve it in case it is re-attached to the live object 
graph. As I said I don't know Zero but I imagine the code should be 
straight forward - just look at how Zero calls the pre-barrier in 
regular object stores.

Regards,

JohnC

On 9/11/2012 8:19 AM, the.6th.month at gmail.com wrote:
> hi,all:
> I just commented out "--/enable-zero" //option and recompiled the 
> icedtea 2.3.2, and the problem has been solved./
> Thanks for all the help.
>
> All the best
> Leon
>
> On 11 September 2012 07:33, the.6th.month at gmail.com 
> <mailto:the.6th.month at gmail.com> <the.6th.month at gmail.com 
> <mailto:the.6th.month at gmail.com>> wrote:
>
>     hi, chris, thanks very much indeed, hope icedtea could support g1
>     cuz it is simply a bloody good stuff
>
>     On Sep 11, 2012 2:01 AM, "Chris Phillips @ T O"
>     <ChrisPhi at lgonqn.org <mailto:ChrisPhi at lgonqn.org>> wrote:
>
>         Hi
>         You should probably address this to the icedtea list or the
>         Zero list as zero is effectively
>         unsupported by the maintainers of the g1 code (they don't
>         build or test with it...)
>         In any event the code that you are using was re-enabled by me
>         recently so when
>         I get some time (still working on jsr 292 atm), I'll try to
>         re-enable g1 with zero [no promises].
>         If you can do it then submit a patch...
>
>         Cheers!
>         Chris
>
>         On 10/09/12 01:49 PM, the.6th.month at gmail.com
>         <mailto:the.6th.month at gmail.com> wrote:
>>         hi,all:
>>
>>         I just compiled an icedtea-2.3.2 version on my laptop, the
>>         kernel version is Linux-3.5.3. I manually built it for the
>>         purpose of systemtap, and hence added --enable-systemtap
>>         compile option.
>>
>>         Then I ran a simple test program with vm args: -Xms1024m
>>         -Xmx1024m -Xmn256m -XX:PermSize=256m -XX:+UseG1GC, and  I got
>>         a core dump. The bt output from gdb is shown below:
>>         Using host libthread_db library "/lib64/libthread_db.so.1".
>>         Core was generated by `/usr/lib64/java/bin/java -Xms1024m
>>         -Xmx1024m -Xmn256m -XX:PermSize=256m -XX:+Us'.
>>         Program terminated with signal 6, Aborted.
>>         #0  0x00007fcfb8950a25 in raise () from /lib64/libc.so.6
>>         (gdb) bt
>>         #0  0x00007fcfb8950a25 in raise () from /lib64/libc.so.6
>>         #1  0x00007fcfb89521d8 in abort () from /lib64/libc.so.6
>>         #2  0x00007fcfb853eaa1 in os::abort (dump_core=true)
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/os/linux/vm/os_linux.cpp:1589
>>         #3  0x00007fcfb85f18cf in VMError::report_and_die
>>         (this=0x7fcfb970f7d0)
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/share/vm/utilities/vmError.cpp:1004
>>         #4  0x00007fcfb836c95f in report_vm_error (detail_msg=0x0,
>>         error_msg=0x7fcfb860cd26 "Unimplemented()",
>>             line=<optimized out>, file=<optimized out>)
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/share/vm/utilities/debug.cpp:220
>>         #5  report_vm_error (detail_msg=0x0, error_msg=0x7fcfb860cd26
>>         "Unimplemented()", line=<optimized out>,
>>             file=<optimized out>) at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/share/vm/utilities/debug.cpp:260
>>         #6  report_unimplemented (file=<optimized out>,
>>         line=<optimized out>)
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/share/vm/utilities/debug.cpp:261
>>         #7  0x00007fcfb836c15d in generate_Reference_get_entry
>>         (this=0x7fcfb970fb00)
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:1649
>>         #8  AbstractInterpreterGenerator::generate_method_entry
>>         (this=0x7fcfb970fb00, kind=<optimized out>)
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:1725
>>         #9  0x00007fcfb8368634 in
>>         CppInterpreterGenerator::generate_all (this=0x7fcfb970fb00)
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/share/vm/interpreter/cppInterpreter.cpp:128
>>         #10 0x00007fcfb8367be2 in CppInterpreter::initialize ()
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/share/vm/interpreter/cppInterpreter.cpp:45
>>         #11 0x00007fcfb84182e9 in interpreter_init ()
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/share/vm/interpreter/interpreter.cpp:113
>>         #12 0x00007fcfb83ea4d5 in init_globals () at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/share/vm/runtime/init.cpp:102
>>         #13 0x00007fcfb85c2bdc in Threads::create_vm (args=<optimized
>>         out>, canTryAgain=0x7fcfb970fd90)
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/share/vm/runtime/thread.cpp:3182
>>         #14 0x00007fcfb844a67f in JNI_CreateJavaVM
>>         (vm=0x7fcfb970fe30, penv=0x7fcfb970fe40, args=<optimized out>)
>>             at
>>         /tmp/icedtea-2.3.2/openjdk/hotspot/src/share/vm/prims/jni.cpp:5112
>>         #15 0x00007fcfb90f56dc in InitializeJVM (penv=0x7fcfb970fe40,
>>         pvm=0x7fcfb970fe30, ifn=<optimized out>)
>>             at ../../../src/share/bin/java.c:1115
>>         ---Type <return> to continue, or q <return> to quit---
>>         #16 JavaMain (_args=<optimized out>) at
>>         ../../../src/share/bin/java.c:360
>>         #17 0x00007fcfb9306eae in start_thread () from
>>         /lib64/libpthread.so.0
>>         #18 0x00007fcfb8a0ffed in clone () from /lib64/libc.so.6
>>
>>         And I dug
>>         into /tmp/icedtea-2.3.2/openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp:1649
>>         following the stacktrace, and discovered that:
>>         address
>>         InterpreterGenerator::generate_Reference_get_entry(void) {
>>         #ifndef SERIALGC
>>           if (UseG1GC) {
>>             // We need to generate have a routine that generates code to:
>>             //   * load the value in the referent field
>>             //   * passes that value to the pre-barrier.
>>             //
>>             // In the case of G1 this will record the value of the
>>             // referent in an SATB buffer if marking is active.
>>             // This will cause concurrent marking to mark the referent
>>             // field as live.
>>             Unimplemented();
>>           }
>>         #endif // SERIALGC
>>
>>           // If G1 is not enabled then attempt to go through the
>>         accessor entry point
>>           // Reference.get is an accessor
>>           return generate_accessor_entry();
>>         }
>>
>>         I am wondering how the generate_Reference_get_entry function
>>         is triggered and why it runs into Unimplemented() when
>>         UseG1GC enabled. Moreover, is the iced-tea 2.3.2 shipped with
>>         G1GC by default or I should enable it with some sort of
>>         compilation option?
>>
>>         Any help would be truly appreciated.
>>
>>         All the best,
>>         Leon
>>
>>
>>
>>         _______________________________________________
>>         hotspot-gc-use mailing list
>>         hotspot-gc-use at openjdk.java.net  <mailto:hotspot-gc-use at openjdk.java.net>
>>         http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
>
>
>
> _______________________________________________
> hotspot-gc-use mailing list
> hotspot-gc-use at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-gc-use/attachments/20120911/7a5e46c5/attachment.html 


More information about the hotspot-gc-use mailing list