Heads-up: jdk/jdk CTW test failures

Aleksey Shipilev shade at redhat.com
Sun May 19 14:00:35 UTC 2019


On 5/19/19 12:24 PM, Zhengyu Gu wrote:
> Fixed in http://cr.openjdk.java.net/~zgu/JDK-8224115/webrev.00/
> 
> @@ -191,15 +189,11 @@
>      {
>        ShenandoahTraversalClosure roots_cl(q, rp);
>        ShenandoahMarkCLDClosure cld_cl(&roots_cl);
>        MarkingCodeBlobClosure code_cl(&roots_cl, CodeBlobToOopClosure::FixRelocations);
>        if (unload_classes) {
> -        _rp->strong_roots_do(worker_id, &roots_cl);
> -        // Need to pre-evac code roots here. Otherwise we might see from-space constants.
> -        ShenandoahWorkerTimings* worker_times = _heap->phase_timings()->worker_times();
> -        ShenandoahWorkerTimingsTracker timer(worker_times, ShenandoahPhaseTimings::CodeCacheRoots,
> worker_id);
> -        _cset_coderoots->possibly_parallel_blobs_do(&code_cl);
> +        _rp->roots_do(worker_id, &roots_cl, NULL, &code_cl);
>        } else {
>          _rp->roots_do(worker_id, &roots_cl, &cld_cl, &code_cl);
>        }
> 
>        AlwaysTrueClosure is_alive;

Okay. I cannot see off-hand how this is safe: do we walk coderoots somewhere else? I don't think we
are, because the assert below happens if I remove that block from jdk/jdk. Anyway, why is it even
there in "eliminate RWLock" patch? Please split it up as the separate patch.

#  Error: Shenandoah assert_not_forwarded failed; Object should not be forwarded

Referenced from:
  interior location: 0x00007f6c40d4dbb0
  outside of Java heap
  0x00007f6c40d4dbb0 points into unknown readable memory: 88 ef ec 0e 07 00 00 00

Object:
  0x000000070eecef88 - klass 0x0000000800b5dcf0 jdk.internal.jimage.ImageBufferCache$1
    not allocated after mark start
    not marked
        in collection set
        in traversal set
  region: |    1|CS |BTE    70ee00000,    70ef00000,    70ef00000|TAMS    70ef00000|U  1024K|T
1024K|G     0B|S     0B|L     0B|CP   0|SN            2,        2,        0,        0

Forwardee:
  0x00000007ffe48098 - klass 0x0000000800b5dcf0 jdk.internal.jimage.ImageBufferCache$1
    not allocated after mark start
        marked
    not in collection set
        in traversal set
  region: | 3857|R  |BTE    7ffe00000,    7fff00000,    7fff00000|TAMS    7fff00000|U  1024K|T
0B|G   761K|S   262K|L   968K|CP   0|SN            0,        0,      238,      26a

Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native
code)
V  [libjvm.so+0x18d52ef]  VMError::report_and_die(int, char const*, char const*, __va_list_tag*,
Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x36f
V  [libjvm.so+0x18d603f]  VMError::report_and_die(Thread*, void*, char const*, int, char const*,
char const*, __va_list_tag*)+0x2f
V  [libjvm.so+0xa80b61]  report_vm_error(char const*, int, char const*, char const*, ...)+0x111
V  [libjvm.so+0x15cec41]  ShenandoahAsserts::print_failure(ShenandoahAsserts::SafeLevel, oop, void*,
oop, char const*, char const*, char const*, int)+0x501
V  [libjvm.so+0x15d1ca7]  ShenandoahAsserts::assert_not_forwarded(void*, oop, char const*, int)+0x127
V  [libjvm.so+0x16c29ce]  ShenandoahTraversalSATBBufferClosure::do_buffer(void**, unsigned long)+0x7e
V  [libjvm.so+0x15910a2]  SATBMarkQueue::apply_closure_and_empty(SATBBufferClosure*)+0x122
V  [libjvm.so+0x167163d]  ShenandoahParallelOopsDoThreadClosure::do_thread(Thread*)+0xed
V  [libjvm.so+0x18109d9]  Threads::possibly_parallel_threads_do(bool, ThreadClosure*)+0xa9
V  [libjvm.so+0x166fe08]  ShenandoahThreadRoots::threads_do(ThreadClosure*, unsigned int)+0xe8
V  [libjvm.so+0x1670aae]  ShenandoahRootScanner::strong_roots_do(unsigned int, OopClosure*,
CLDClosure*, CodeBlobClosure*, ThreadClosure*)+0x18e
V  [libjvm.so+0x16c04bf]  ShenandoahFinalTraversalCollectionTask::work(unsigned int)+0x20f
V  [libjvm.so+0x1948b20]  GangWorker::loop()+0xe0
V  [libjvm.so+0x1813b06]  Thread::call_run()+0xf6
V  [libjvm.so+0x141c40e]  thread_native_entry(Thread*)+0x10e

-Aleksey



More information about the shenandoah-dev mailing list