Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8064749

-XX:-UseCompilerSafepoints breaks safepoint rendezvous

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 9
    • 8u40, 9
    • hotspot
    • b42

        (synopsis is probably incomplete, please change as you see fit)

        Originally reported by Tom Deneau on jmh-dev, and then on hotspot-runtime-dev:
          http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2014-November/013216.html

        The problems seems to be when one thread is busy-waiting on global volatile flag,
        and another thread sleeps for a given time, and then sets the flag. We can deadlock on
        safepoint rendezvous, when "sleeper" thread had reached the safepoint, but "worker" is not
        reaching safepoint, blocking progress.

        Reproducible test:
         http://cr.openjdk.java.net/~shade/8064749/Stuck.java

        $ java Stuck
        (exits after 5 seconds)

        $ java -XX:-UseCompilerSafepoints Stuck
        (waits indefinitely, does not react to jstack -F, SIGINT, etc.)

        $ java -XX:-UseCompilerSafepoints -XX:+SafepointTimeout Stuck
        ("Worker" thread is stuck)

        # SafepointSynchronize::begin: Timeout detected:
        # SafepointSynchronize::begin: Timed out while spinning to reach a safepoint.
        # SafepointSynchronize::begin: Threads which did not reach the safepoint:
        # "Worker" #9 prio=5 os_prio=0 tid=0x00007feddc0db800 nid=0x19f0 runnable [0x0000000000000000]
           java.lang.Thread.State: RUNNABLE

        # SafepointSynchronize::begin: (End of list)

              shade Aleksey Shipilev
              shade Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: