[BACKOUT] JDK-8376126 G1: Convert remaining volatiles in G1ConcurrentMark to Atomic<T>

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: P2
    • 27
    • Affects Version/s: 27
    • Component/s: hotspot
    • gc
    • master

      We get lots of crashes in hotspot tier1 tests after JDK-8376126:

      debug build:
      assert(start != nullptr && end != nullptr && start <= end) failed: Start (0x0000000000000000) should be less or equal to end (0x00000000d0400000)

      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      V [libjvm.so+0xe82a43] G1CMRootMemRegions::add(HeapWordImpl**, HeapWordImpl**)+0xf3 (g1ConcurrentMark.cpp:393)
      V [libjvm.so+0xe69e2f] G1CollectedHeap::retire_gc_alloc_region(G1HeapRegion*, unsigned long, G1HeapRegionAttr)+0xcf (g1CollectedHeap.cpp:3218)
      V [libjvm.so+0xe2310c] G1GCAllocRegion::retire_region(G1HeapRegion*)+0x5c (g1AllocRegion.cpp:338)
      V [libjvm.so+0xe25b93] G1AllocRegion::retire_internal(G1HeapRegion*, bool)+0x33 (g1AllocRegion.cpp:108)
      V [libjvm.so+0xe25eba] G1GCAllocRegion::retire(bool)+0x7a (g1AllocRegion.cpp:121)
      V [libjvm.so+0xe2fa0a] G1Allocator::old_attempt_allocation(unsigned long, unsigned long, unsigned long*)+0x24a (g1AllocRegion.inline.hpp:86)
      V [libjvm.so+0xe303a7] G1PLABAllocator::allocate_direct_or_new_plab(G1HeapRegionAttr, unsigned long, bool*, unsigned int)+0x2b7 (g1Allocator.cpp:242)
      V [libjvm.so+0xf3333b] G1ParScanThreadState::allocate_copy_slow(G1HeapRegionAttr*, Klass*, unsigned long, unsigned int, unsigned int)+0x6b (g1ParScanThreadState.cpp:383)
      V [libjvm.so+0xf373fc] G1ParScanThreadState::do_copy_to_survivor_space(G1HeapRegionAttr, oop, markWord)+0x94c (g1ParScanThreadState.cpp:500)
      V [libjvm.so+0xf3da3d] void G1ParScanThreadState::do_oop_evac<narrowOop>(narrowOop*)+0x44d (g1ParScanThreadState.cpp:224)
      V [libjvm.so+0xf38413] G1ParScanThreadState::trim_queue_to_threshold(unsigned int)+0x423 (g1ParScanThreadState.cpp:290)
      V [libjvm.so+0xf52e69] G1ParScanThreadState::trim_queue_partially()+0x39 (g1ParScanThreadState.inline.hpp:53)
      V [libjvm.so+0xf7865d] void G1ParCopyClosure<(G1Barrier)0, true>::do_oop_work<oop>(oop*)+0x17d (g1OopClosures.inline.hpp:226)
      V [libjvm.so+0x17bc73c] InterpreterOopMap::iterate_oop(OffsetClosure*) const+0xfc (oopMapCache.cpp:215)
      V [libjvm.so+0xe1b502] void frame::oops_interpreted_do<RegisterMap>(OopClosure*, RegisterMap const*, bool) const+0x562 (frame.cpp:957)
      V [libjvm.so+0x111db57] JavaThread::oops_do_frames(OopClosure*, NMethodClosure*) [clone .part.0]+0x117 (frame.hpp:485)
      V [libjvm.so+0x1d4a379] Thread::oops_do(OopClosure*, NMethodClosure*)+0x89 (thread.cpp:461)
      V [libjvm.so+0x1d67da4] Threads::possibly_parallel_oops_do(bool, OopClosure*, NMethodClosure*)+0x1e4 (threads.cpp:1253)
      V [libjvm.so+0xf7c8a3] G1RootProcessor::process_java_roots(G1RootClosures*, G1GCPhaseTimes*, unsigned int)+0xd3 (g1RootProcessor.cpp:180)
      V [libjvm.so+0xf7d0b8] G1RootProcessor::evacuate_roots(G1ParScanThreadState*, unsigned int)+0x118 (g1RootProcessor.cpp:62)
      V [libjvm.so+0xf914d2] G1EvacuateRegionsTask::scan_roots(G1ParScanThreadState*, unsigned int)+0x22 (g1YoungCollector.cpp:743)
      V [libjvm.so+0xf91b30] G1EvacuateRegionsBaseTask::work(unsigned int)+0xc0 (g1YoungCollector.cpp:730)
      V [libjvm.so+0x1eb7ab8] WorkerThread::run()+0x88 (workerThread.cpp:71)
      V [libjvm.so+0x1d4ab76] Thread::call_run()+0xb6 (thread.cpp:243)
      V [libjvm.so+0x17e2348] thread_native_entry(Thread*)+0x118 (os_linux.cpp:929)
      JavaThread 0x00007f731802f5c0 (nid = 3655801) was being processed

      product build:
      # SIGSEGV (0xb) at pc=0x00007fea31294518, pid=1725942, tid=1727006
      #
      # JRE version: OpenJDK Runtime Environment (27.0) (build 27-internal-adhoc.sapmachine.jdk)
      # Java VM: OpenJDK 64-Bit Server VM (27-internal-adhoc.sapmachine.jdk, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
      # Problematic frame:
      # V [libjvm.so+0x894518] G1CMRootRegionScanTask::work(unsigned int)+0x1f8

      Reproduction: e.g.
      make run-test TEST=test/hotspot/jtreg/compiler/arraycopy

      Backing out the change

            Assignee:
            David Holmes
            Reporter:
            Martin Doerr
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: