JShell uses 100% of one core all the time (JDK 15 Build 27)
Aaron Scott-Boddendijk
talden at gmail.com
Mon Jul 13 04:00:58 UTC 2020
I can confirm the CPU behaves as suggested with a sequence of entering and
leaving `/edit`.
Thanks Christian.
--
Aaron Scott-Boddendijk
On Mon, Jul 13, 2020 at 3:27 PM Christian Stein <sormuras at gmail.com> wrote:
> It's coming from the "while(true)"-loop in StopDetectingInputStream.java
> [0].
>
> Aaron, try to open an external editor within the JShell session via
>
> /edit
>
> The CPU usage should drop immediately to normal levels.
> As soon as you close the editor (it's the internal JShell Edit Pad for me)
> the thread is again eating CPU cycles. Can you confirm this?
>
> While the editor is opened, the thread waits via
>
> jdk.internal.jshell.tool.StopDetectingInputStream.waitInputNeeded line:
> 164
>
> If no editor is open, the "input.read()" method does never wait:
>
>
> jdk.internal.jshell.tool.StopDetectingInputStream.lambda$setInputStream$0
> line: 66
>
> Cheers,
> Christian
>
> [0]:
>
> https://github.com/openjdk/jdk/blob/faf4d7ccb792b16092c791c0ac77acdd440dbca1/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/StopDetectingInputStream.java#L57-L74
>
> On Mon, Jul 13, 2020 at 5:05 AM Christian Stein <sormuras at gmail.com>
> wrote:
>
> > Seems like "read line" from "jline" is underlying reason:
> >
> > Thread-2 [31] (RUNNABLE)
> >
> >
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await
> > line: 1749
> > jdk.internal.org.jline.utils.NonBlockingPumpReader.read line: 77
> > jdk.internal.org.jline.utils.NonBlockingReader.read line: 57
> >
> >
> jdk.internal.org.jline.utils.NonBlocking$NonBlockingReaderInputStream.read
> > line: 104
> > jdk.internal.org.jline.utils.NonBlockingInputStream.read line: 36
> >
> >
> jdk.internal.jshell.tool.StopDetectingInputStream.lambda$setInputStream$0
> > line: 66
> >
> >
> jdk.internal.jshell.tool.StopDetectingInputStream$$Lambda$347/0x0000000800cff330.run
> > line: not available
> > java.lang.Thread.run line: 832
> >
> > It produces a constant high CPU usage and allocates a lot of RAM per
> > second.
> >
> > Thread Name Thread State Blocked Count Total CPU Usage Deadlocked
> > Allocated Memory
> > Thread-2 RUNNABLE 1 0.06252084028009336 Not Enabled 196198305136 B
> >
> >
> >
> >
> >
> > On Mon, Jul 13, 2020 at 4:52 AM Christian Stein <sormuras at gmail.com>
> > wrote:
> >
> >> Hi Aaron,
> >>
> >> I observe the same behaviour of JShell 15 build 30.
> >>
> >> Here, the 100% CPU workload is split on to 3-4 logical processors.
> >> Grabbed an animated GIF of "jshell.exe -- /exit" session at [0].
> >> To me, it looks like a loop is running wild, w/o a
> >> Thread.yield()/.sleep() call.
> >>
> >> Microsoft Windows [Version 10.0.19041.329]
> >>
> >> openjdk 15-ea 2020-09-15
> >> OpenJDK Runtime Environment (build 15-ea+30-1476)
> >> OpenJDK 64-Bit Server VM (build 15-ea+30-1476, mixed mode, sharing)
> >>
> >> Cheers,
> >> Christian
> >>
> >> [0]:
> >>
> https://drive.google.com/file/d/1KOQO5B9WrM4C43K3AB7H9VVPuh9hdCOe/view?usp=sharing
> >>
> >>
> >> On Mon, Jul 13, 2020 at 4:24 AM Aaron Scott-Boddendijk <
> talden at gmail.com>
> >> wrote:
> >>
> >>> This still exists in JDK 15 build 31.
> >>>
> >>> Is any other Windows user able to reproduce this? I have two machines,
> >>> one
> >>> laptop and one desktop that show a CPU thread constantly @ 100% just by
> >>> starting JShell. For the desktop machine that's not a major issue but
> for
> >>> the laptop this spins up the fans and eats the battery.
> >>>
> >>> JShell in JDK 14 is fine.
> >>>
> >>> I've yet to hear of any other user confirming this issue.
> >>>
> >>> --
> >>> Aaron Scott-Boddendijk
> >>>
> >>>
> >>> On Fri, Jun 26, 2020 at 2:00 PM Aaron Scott-Boddendijk <
> talden at gmail.com
> >>> >
> >>> wrote:
> >>>
> >>> > Just confirming that:
> >>> >
> >>> > * This still exists in JDK 15 build 29
> >>> > * Occurs on multiple unrelated Windows 10 machines with differing
> major
> >>> > versions of the OS.
> >>> > * Does not occur in JDK 14.01 on these machines (OpenJDK 64-Bit
> Server
> >>> VM
> >>> > Zulu14.28+21-CA)
> >>> > * Does not appear to occur on Linux
> >>> >
> >>> > --
> >>> > Aaron Scott-Boddendijk
> >>> >
> >>> >
> >>> > On Tue, Jun 16, 2020 at 11:16 AM Aaron Scott-Boddendijk <
> >>> talden at gmail.com>
> >>> > wrote:
> >>> >
> >>> >> This is the thread-dump from the JVM that VisualVM sees as using a
> >>> core...
> >>> >>
> >>> >> 2020-06-16 11:07:35
> >>> >> Full thread dump OpenJDK 64-Bit Server VM (15-ea+27-1372 mixed mode,
> >>> >> sharing):
> >>> >>
> >>> >> Threads class SMR info:
> >>> >> _java_thread_list=0x000001e34a6040f0, length=23, elements={
> >>> >> 0x000001e31c1a1dc0, 0x000001e349035ee0, 0x000001e349037250,
> >>> >> 0x000001e349058ae0,
> >>> >> 0x000001e34905c5b0, 0x000001e34905f710, 0x000001e3490603f0,
> >>> >> 0x000001e349065140,
> >>> >> 0x000001e34906d620, 0x000001e349b36a20, 0x000001e349b8c690,
> >>> >> 0x000001e349da3400,
> >>> >> 0x000001e349daa7c0, 0x000001e349dbb640, 0x000001e34a141140,
> >>> >> 0x000001e349d555c0,
> >>> >> 0x000001e34b07f030, 0x000001e34a461c90, 0x000001e34a45fae0,
> >>> >> 0x000001e34a45ffb0,
> >>> >> 0x000001e34a4617c0, 0x000001e34a462160, 0x000001e34a45f610
> >>> >> }
> >>> >>
> >>> >> "main" #1 prio=5 os_prio=0 cpu=1078.13ms elapsed=341.81s
> >>> >> tid=0x000001e31c1a1dc0 nid=0x16b0 in Object.wait()
> >>> [0x000000340d9fe000]
> >>> >> java.lang.Thread.State: TIMED_WAITING (on object monitor)
> >>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
> >>> >> - waiting on <no object reference available>
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.utils.NonBlockingInputStreamImpl.read(jdk.internal.le at 15-ea
> >>> >> /NonBlockingInputStreamImpl.java:139)
> >>> >> - locked <0x000000060fe87338> (a
> >>> >> jdk.internal.jshell.tool.ConsoleIOContext$1)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.utils.NonBlockingInputStream.read(jdk.internal.le at 15-ea
> >>> >> /NonBlockingInputStream.java:62)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.utils.NonBlocking$NonBlockingInputStreamReader.read(jdk.internal.le at 15-ea
> >>> >> /NonBlocking.java:168)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.utils.NonBlockingReader.read(jdk.internal.le at 15-ea
> >>> >> /NonBlockingReader.java:57)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.keymap.BindingReader.readCharacter(jdk.internal.le at 15-ea
> >>> >> /BindingReader.java:160)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.keymap.BindingReader.readBinding(jdk.internal.le at 15-ea
> >>> >> /BindingReader.java:110)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.keymap.BindingReader.readBinding(jdk.internal.le at 15-ea
> >>> >> /BindingReader.java:61)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.reader.impl.LineReaderImpl.doReadBinding(jdk.internal.le at 15-ea
> >>> >> /LineReaderImpl.java:913)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.reader.impl.LineReaderImpl.readBinding(jdk.internal.le at 15-ea
> >>> >> /LineReaderImpl.java:946)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.jshell.tool.ConsoleIOContext$2.readBinding(jdk.jshell at 15-ea
> >>> >> /ConsoleIOContext.java:154)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.reader.impl.LineReaderImpl.readLine(jdk.internal.le at 15-ea
> >>> >> /LineReaderImpl.java:637)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.reader.impl.LineReaderImpl.readLine(jdk.internal.le at 15-ea
> >>> >> /LineReaderImpl.java:454)
> >>> >> at
> >>> >> jdk.internal.jshell.tool.ConsoleIOContext.readLine(jdk.jshell at 15-ea
> >>> >> /ConsoleIOContext.java:229)
> >>> >> at
> >>> jdk.internal.jshell.tool.JShellTool.getInput(jdk.jshell at 15-ea
> >>> >> /JShellTool.java:1254)
> >>> >> at jdk.internal.jshell.tool.JShellTool.run(jdk.jshell at 15-ea
> >>> >> /JShellTool.java:1190)
> >>> >> at
> jdk.internal.jshell.tool.JShellTool.start(jdk.jshell at 15-ea
> >>> >> /JShellTool.java:991)
> >>> >> at
> >>> >> jdk.internal.jshell.tool.JShellToolBuilder.start(jdk.jshell at 15-ea
> >>> >> /JShellToolBuilder.java:254)
> >>> >> at
> >>> >> jdk.internal.jshell.tool.JShellToolProvider.main(jdk.jshell at 15-ea
> >>> >> /JShellToolProvider.java:120)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "Reference Handler" #2 daemon prio=10 os_prio=2 cpu=0.00ms
> >>> >> elapsed=341.79s tid=0x000001e349035ee0 nid=0x13fc waiting on
> condition
> >>> >> [0x000000340e0fe000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >> at
> >>> >> java.lang.ref.Reference.waitForReferencePendingList(java.base at 15-ea
> >>> /Native
> >>> >> Method)
> >>> >> at
> >>> >> java.lang.ref.Reference.processPendingReferences(java.base at 15-ea
> >>> >> /Reference.java:241)
> >>> >> at
> >>> java.lang.ref.Reference$ReferenceHandler.run(java.base at 15-ea
> >>> >> /Reference.java:213)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "Finalizer" #3 daemon prio=8 os_prio=1 cpu=0.00ms elapsed=341.79s
> >>> >> tid=0x000001e349037250 nid=0x2a60 in Object.wait()
> >>> [0x000000340e1fe000]
> >>> >> java.lang.Thread.State: WAITING (on object monitor)
> >>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
> >>> >> - waiting on <0x0000000601400bc0> (a
> >>> >> java.lang.ref.ReferenceQueue$Lock)
> >>> >> at java.lang.ref.ReferenceQueue.remove(java.base at 15-ea
> >>> >> /ReferenceQueue.java:155)
> >>> >> - locked <0x0000000601400bc0> (a
> >>> >> java.lang.ref.ReferenceQueue$Lock)
> >>> >> at java.lang.ref.ReferenceQueue.remove(java.base at 15-ea
> >>> >> /ReferenceQueue.java:176)
> >>> >> at
> java.lang.ref.Finalizer$FinalizerThread.run(java.base at 15-ea
> >>> >> /Finalizer.java:170)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "Signal Dispatcher" #4 daemon prio=9 os_prio=2 cpu=0.00ms
> >>> elapsed=341.78s
> >>> >> tid=0x000001e349058ae0 nid=0x35c8 runnable [0x0000000000000000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "Attach Listener" #5 daemon prio=5 os_prio=2 cpu=125.00ms
> >>> elapsed=341.78s
> >>> >> tid=0x000001e34905c5b0 nid=0x3e0c waiting on condition
> >>> [0x0000000000000000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "Service Thread" #6 daemon prio=9 os_prio=0 cpu=0.00ms
> elapsed=341.78s
> >>> >> tid=0x000001e34905f710 nid=0x398c runnable [0x0000000000000000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "C2 CompilerThread0" #7 daemon prio=9 os_prio=2 cpu=1781.25ms
> >>> >> elapsed=341.78s tid=0x000001e3490603f0 nid=0xcf0 waiting on
> condition
> >>> >> [0x0000000000000000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >> No compile task
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "C1 CompilerThread0" #10 daemon prio=9 os_prio=2 cpu=765.63ms
> >>> >> elapsed=341.78s tid=0x000001e349065140 nid=0x3e54 waiting on
> condition
> >>> >> [0x0000000000000000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >> No compile task
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "Sweeper thread" #11 daemon prio=9 os_prio=2 cpu=0.00ms
> >>> elapsed=341.78s
> >>> >> tid=0x000001e34906d620 nid=0x38bc runnable [0x0000000000000000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "Notification Thread" #12 daemon prio=9 os_prio=0 cpu=0.00ms
> >>> >> elapsed=341.76s tid=0x000001e349b36a20 nid=0x49b8 runnable
> >>> >> [0x0000000000000000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "Common-Cleaner" #13 daemon prio=8 os_prio=1 cpu=0.00ms
> >>> elapsed=341.75s
> >>> >> tid=0x000001e349b8c690 nid=0x26e4 in Object.wait()
> >>> [0x000000340eaff000]
> >>> >> java.lang.Thread.State: TIMED_WAITING (on object monitor)
> >>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
> >>> >> - waiting on <no object reference available>
> >>> >> at java.lang.ref.ReferenceQueue.remove(java.base at 15-ea
> >>> >> /ReferenceQueue.java:155)
> >>> >> - locked <0x0000000601401a78> (a
> >>> >> java.lang.ref.ReferenceQueue$Lock)
> >>> >> at jdk.internal.ref.CleanerImpl.run(java.base at 15-ea
> >>> >> /CleanerImpl.java:148)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >> at jdk.internal.misc.InnocuousThread.run(java.base at 15-ea
> >>> >> /InnocuousThread.java:134)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "JDI Internal Event Handler" #17 daemon prio=5 os_prio=0 cpu=15.63ms
> >>> >> elapsed=341.39s tid=0x000001e349da3400 nid=0x68 in Object.wait()
> >>> >> [0x000000340effe000]
> >>> >> java.lang.Thread.State: WAITING (on object monitor)
> >>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
> >>> >> - waiting on <no object reference available>
> >>> >> at java.lang.Object.wait(java.base at 15-ea/Object.java:321)
> >>> >> at
> >>> com.sun.tools.jdi.EventQueueImpl.removeUnfiltered(jdk.jdi at 15-ea
> >>> >> /EventQueueImpl.java:190)
> >>> >> - locked <0x000000060154b630> (a
> >>> com.sun.tools.jdi.EventQueueImpl)
> >>> >> at
> >>> com.sun.tools.jdi.EventQueueImpl.removeInternal(jdk.jdi at 15-ea
> >>> >> /EventQueueImpl.java:125)
> >>> >> at com.sun.tools.jdi.InternalEventHandler.run(jdk.jdi at 15-ea
> >>> >> /InternalEventHandler.java:61)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "JDI Target VM Interface" #16 daemon prio=5 os_prio=0 cpu=46.88ms
> >>> >> elapsed=341.39s tid=0x000001e349daa7c0 nid=0x3d04 runnable
> >>> >> [0x000000340f0fe000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >> at sun.nio.ch.SocketDispatcher.read0(java.base at 15-ea/Native
> >>> >> Method)
> >>> >> at sun.nio.ch.SocketDispatcher.read(java.base at 15-ea
> >>> >> /SocketDispatcher.java:46)
> >>> >> at sun.nio.ch.NioSocketImpl.tryRead(java.base at 15-ea
> >>> >> /NioSocketImpl.java:261)
> >>> >> at sun.nio.ch.NioSocketImpl.implRead(java.base at 15-ea
> >>> >> /NioSocketImpl.java:312)
> >>> >> at sun.nio.ch.NioSocketImpl.read(java.base at 15-ea
> >>> >> /NioSocketImpl.java:350)
> >>> >> at sun.nio.ch.NioSocketImpl$1.read(java.base at 15-ea
> >>> >> /NioSocketImpl.java:803)
> >>> >> at java.net.Socket$SocketInputStream.read(java.base at 15-ea
> >>> >> /Socket.java:981)
> >>> >> at java.net.Socket$SocketInputStream.read(java.base at 15-ea
> >>> >> /Socket.java:976)
> >>> >> at
> com.sun.tools.jdi.SocketConnection.readPacket(jdk.jdi at 15-ea
> >>> >> /SocketConnection.java:82)
> >>> >> - locked <0x000000060154b998> (a java.lang.Object)
> >>> >> at com.sun.tools.jdi.TargetVM.run(jdk.jdi at 15-ea
> >>> >> /TargetVM.java:124)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - <0x0000000601577110> (a
> >>> >> java.util.concurrent.locks.ReentrantLock$NonfairSync)
> >>> >>
> >>> >> "event-handler" #18 daemon prio=5 os_prio=0 cpu=0.00ms
> elapsed=341.38s
> >>> >> tid=0x000001e349dbb640 nid=0x203c in Object.wait()
> >>> [0x000000340edfe000]
> >>> >> java.lang.Thread.State: WAITING (on object monitor)
> >>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
> >>> >> - waiting on <no object reference available>
> >>> >> at java.lang.Object.wait(java.base at 15-ea/Object.java:321)
> >>> >> at
> >>> com.sun.tools.jdi.EventQueueImpl.removeUnfiltered(jdk.jdi at 15-ea
> >>> >> /EventQueueImpl.java:190)
> >>> >> - locked <0x000000060154bc28> (a
> >>> com.sun.tools.jdi.EventQueueImpl)
> >>> >> at com.sun.tools.jdi.EventQueueImpl.remove(jdk.jdi at 15-ea
> >>> >> /EventQueueImpl.java:97)
> >>> >> at com.sun.tools.jdi.EventQueueImpl.remove(jdk.jdi at 15-ea
> >>> >> /EventQueueImpl.java:83)
> >>> >> at jdk.jshell.execution.JdiEventHandler.run(jdk.jshell at 15-ea
> >>> >> /JdiEventHandler.java:79)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "output reader" #19 daemon prio=5 os_prio=0 cpu=0.00ms
> elapsed=341.31s
> >>> >> tid=0x000001e34a141140 nid=0x49c0 runnable [0x000000340eeff000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >> at sun.nio.ch.SocketDispatcher.read0(java.base at 15-ea/Native
> >>> >> Method)
> >>> >> at sun.nio.ch.SocketDispatcher.read(java.base at 15-ea
> >>> >> /SocketDispatcher.java:46)
> >>> >> at sun.nio.ch.NioSocketImpl.tryRead(java.base at 15-ea
> >>> >> /NioSocketImpl.java:261)
> >>> >> at sun.nio.ch.NioSocketImpl.implRead(java.base at 15-ea
> >>> >> /NioSocketImpl.java:312)
> >>> >> at sun.nio.ch.NioSocketImpl.read(java.base at 15-ea
> >>> >> /NioSocketImpl.java:350)
> >>> >> at sun.nio.ch.NioSocketImpl$1.read(java.base at 15-ea
> >>> >> /NioSocketImpl.java:803)
> >>> >> at java.net.Socket$SocketInputStream.read(java.base at 15-ea
> >>> >> /Socket.java:981)
> >>> >> at java.net.Socket$SocketInputStream.read(java.base at 15-ea
> >>> >> /Socket.java:976)
> >>> >> at java.io.FilterInputStream.read(java.base at 15-ea
> >>> >> /FilterInputStream.java:82)
> >>> >> at
> jdk.jshell.execution.DemultiplexInput.run(jdk.jshell at 15-ea
> >>> >> /DemultiplexInput.java:58)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - <0x0000000601553510> (a
> >>> >> java.util.concurrent.locks.ReentrantLock$NonfairSync)
> >>> >>
> >>> >> "Thread-0" #21 daemon prio=5 os_prio=0 cpu=312.50ms elapsed=341.22s
> >>> >> tid=0x000001e349d555c0 nid=0x4d88 waiting on condition
> >>> [0x000000340f1fe000]
> >>> >> java.lang.Thread.State: WAITING (parking)
> >>> >> at jdk.internal.misc.Unsafe.park(java.base at 15-ea/Native
> >>> Method)
> >>> >> - parking to wait for <0x0000000601550fc0> (a
> >>> >>
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> >>> >> at
> java.util.concurrent.locks.LockSupport.park(java.base at 15-ea
> >>> >> /LockSupport.java:341)
> >>> >> at
> >>> >>
> >>>
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(java.base at 15-ea
> >>> >> /AbstractQueuedSynchronizer.java:505)
> >>> >> at
> >>> java.util.concurrent.ForkJoinPool.managedBlock(java.base at 15-ea
> >>> >> /ForkJoinPool.java:3137)
> >>> >> at
> >>> >>
> >>>
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base at 15-ea
> >>> >> /AbstractQueuedSynchronizer.java:1614)
> >>> >> at
> >>> java.util.concurrent.LinkedBlockingQueue.take(java.base at 15-ea
> >>> >> /LinkedBlockingQueue.java:435)
> >>> >> at
> >>> java.util.concurrent.ThreadPoolExecutor.getTask(java.base at 15-ea
> >>> >> /ThreadPoolExecutor.java:1056)
> >>> >> at
> >>> >> java.util.concurrent.ThreadPoolExecutor.runWorker(java.base at 15-ea
> >>> >> /ThreadPoolExecutor.java:1116)
> >>> >> at
> >>> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base at 15-ea
> >>> >> /ThreadPoolExecutor.java:630)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "Thread-2" #23 daemon prio=5 os_prio=0 cpu=338859.38ms
> elapsed=340.58s
> >>> >> tid=0x000001e34b07f030 nid=0xac0 runnable [0x000000340f3fe000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >> at
> >>> >>
> >>>
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base at 15-ea
> >>> >> /AbstractQueuedSynchronizer.java:1749)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.utils.NonBlockingPumpReader.read(jdk.internal.le at 15-ea
> >>> >> /NonBlockingPumpReader.java:77)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.utils.NonBlockingReader.read(jdk.internal.le at 15-ea
> >>> >> /NonBlockingReader.java:57)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.utils.NonBlocking$NonBlockingReaderInputStream.read(jdk.internal.le at 15-ea
> >>> >> /NonBlocking.java:104)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.utils.NonBlockingInputStream.read(jdk.internal.le at 15-ea
> >>> >> /NonBlockingInputStream.java:36)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.jshell.tool.StopDetectingInputStream.lambda$setInputStream$0(jdk.jshell at 15-ea
> >>> >> /StopDetectingInputStream.java:66)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.jshell.tool.StopDetectingInputStream$$Lambda$410/0x0000000800d2eb28.run(jdk.jshell at 15-ea
> >>> /Unknown
> >>> >> Source)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - <0x00000006028b4318> (a
> >>> >> java.util.concurrent.locks.ReentrantLock$NonfairSync)
> >>> >>
> >>> >> "WindowsStreamPump" #25 daemon prio=5 os_prio=0 cpu=0.00ms
> >>> >> elapsed=340.53s tid=0x000001e34a461c90 nid=0x3688 runnable
> >>> >> [0x000000340f4fe000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.terminal.impl.jna.win.Kernel32Impl.WaitForSingleObject(jdk.internal.le at 15-ea
> >>> /Native
> >>> >> Method)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.terminal.impl.jna.win.JnaWinSysTerminal.readConsoleInput(jdk.internal.le at 15-ea
> >>> >> /JnaWinSysTerminal.java:185)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.terminal.impl.jna.win.JnaWinSysTerminal.processConsoleInput(jdk.internal.le at 15-ea
> >>> >> /JnaWinSysTerminal.java:108)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.terminal.impl.AbstractWindowsTerminal.pump(jdk.internal.le at 15-ea
> >>> >> /AbstractWindowsTerminal.java:465)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.terminal.impl.AbstractWindowsTerminal$$Lambda$417/0x0000000800d310f8.run(jdk.internal.le at 15-ea
> >>> /Unknown
> >>> >> Source)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "null non blocking reader thread" #26 daemon prio=5 os_prio=0
> >>> cpu=0.00ms
> >>> >> elapsed=340.26s tid=0x000001e34a45fae0 nid=0x488 in Object.wait()
> >>> >> [0x000000340f6ff000]
> >>> >> java.lang.Thread.State: WAITING (on object monitor)
> >>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
> >>> >> - waiting on <no object reference available>
> >>> >> at java.lang.Object.wait(java.base at 15-ea/Object.java:321)
> >>> >> at
> >>> >>
> >>> jdk.internal.jshell.tool.StopDetectingInputStream.read(jdk.jshell at 15-ea
> >>> >> /StopDetectingInputStream.java:98)
> >>> >> - locked <0x0000000601e2b650> (a
> >>> >> jdk.internal.jshell.tool.StopDetectingInputStream)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.utils.NonBlockingInputStreamImpl.run(jdk.internal.le at 15-ea
> >>> >> /NonBlockingInputStreamImpl.java:216)
> >>> >> at
> >>> >>
> >>>
> jdk.internal.org.jline.utils.NonBlockingInputStreamImpl$$Lambda$584/0x0000000800d4f088.run(jdk.internal.le at 15-ea
> >>> /Unknown
> >>> >> Source)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "RMI TCP Accept-0" #27 daemon prio=5 os_prio=0 cpu=0.00ms
> >>> elapsed=180.89s
> >>> >> tid=0x000001e34a45ffb0 nid=0x45f0 runnable [0x000000340d8fe000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >> at sun.nio.ch.Net.accept(java.base at 15-ea/Native Method)
> >>> >> at sun.nio.ch.NioSocketImpl.accept(java.base at 15-ea
> >>> >> /NioSocketImpl.java:755)
> >>> >> at java.net.ServerSocket.implAccept(java.base at 15-ea
> >>> >> /ServerSocket.java:684)
> >>> >> at java.net.ServerSocket.platformImplAccept(java.base at 15-ea
> >>> >> /ServerSocket.java:650)
> >>> >> at java.net.ServerSocket.implAccept(java.base at 15-ea
> >>> >> /ServerSocket.java:626)
> >>> >> at java.net.ServerSocket.implAccept(java.base at 15-ea
> >>> >> /ServerSocket.java:583)
> >>> >> at java.net.ServerSocket.accept(java.base at 15-ea
> >>> >> /ServerSocket.java:540)
> >>> >> at
> >>> >>
> >>>
> sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(jdk.management.agent at 15-ea
> >>> >> /LocalRMIServerSocketFactory.java:52)
> >>> >> at
> >>> >>
> >>>
> sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(java.rmi at 15-ea
> >>> >> /TCPTransport.java:413)
> >>> >> at
> >>> >> sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(java.rmi at 15-ea
> >>> >> /TCPTransport.java:377)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - <0x0000000602e53118> (a
> >>> >> java.util.concurrent.locks.ReentrantLock$NonfairSync)
> >>> >>
> >>> >> "RMI TCP Connection(1)-10.0.201.131" #28 daemon prio=5 os_prio=0
> >>> >> cpu=437.50ms elapsed=180.87s tid=0x000001e34a4617c0 nid=0x4790
> >>> runnable
> >>> >> [0x000000340fbfe000]
> >>> >> java.lang.Thread.State: RUNNABLE
> >>> >> at sun.nio.ch.Net.poll(java.base at 15-ea/Native Method)
> >>> >> at sun.nio.ch.NioSocketImpl.park(java.base at 15-ea
> >>> >> /NioSocketImpl.java:181)
> >>> >> at sun.nio.ch.NioSocketImpl.timedRead(java.base at 15-ea
> >>> >> /NioSocketImpl.java:285)
> >>> >> at sun.nio.ch.NioSocketImpl.implRead(java.base at 15-ea
> >>> >> /NioSocketImpl.java:309)
> >>> >> at sun.nio.ch.NioSocketImpl.read(java.base at 15-ea
> >>> >> /NioSocketImpl.java:350)
> >>> >> at sun.nio.ch.NioSocketImpl$1.read(java.base at 15-ea
> >>> >> /NioSocketImpl.java:803)
> >>> >> at java.net.Socket$SocketInputStream.read(java.base at 15-ea
> >>> >> /Socket.java:981)
> >>> >> at java.io.BufferedInputStream.fill(java.base at 15-ea
> >>> >> /BufferedInputStream.java:244)
> >>> >> at java.io.BufferedInputStream.read(java.base at 15-ea
> >>> >> /BufferedInputStream.java:263)
> >>> >> - locked <0x0000000602e19470> (a
> java.io.BufferedInputStream)
> >>> >> at java.io.FilterInputStream.read(java.base at 15-ea
> >>> >> /FilterInputStream.java:82)
> >>> >> at
> >>> >> sun.rmi.transport.tcp.TCPTransport.handleMessages(java.rmi at 15-ea
> >>> >> /TCPTransport.java:569)
> >>> >> at
> >>> >>
> >>>
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(java.rmi at 15-ea
> >>> >> /TCPTransport.java:828)
> >>> >> at
> >>> >>
> >>>
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(java.rmi at 15-ea
> >>> >> /TCPTransport.java:705)
> >>> >> at
> >>> >>
> >>>
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$686/0x0000000800da3998.run(java.rmi at 15-ea
> >>> /Unknown
> >>> >> Source)
> >>> >> at
> >>> >> java.security.AccessController.executePrivileged(java.base at 15-ea
> >>> >> /AccessController.java:753)
> >>> >> at
> java.security.AccessController.doPrivileged(java.base at 15-ea
> >>> >> /AccessController.java:391)
> >>> >> at
> >>> >>
> >>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(java.rmi at 15-ea
> >>> >> /TCPTransport.java:704)
> >>> >> at
> >>> >> java.util.concurrent.ThreadPoolExecutor.runWorker(java.base at 15-ea
> >>> >> /ThreadPoolExecutor.java:1130)
> >>> >> at
> >>> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base at 15-ea
> >>> >> /ThreadPoolExecutor.java:630)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - <0x0000000602e19708> (a
> >>> >> java.util.concurrent.ThreadPoolExecutor$Worker)
> >>> >> - <0x0000000602e59038> (a
> >>> >> java.util.concurrent.locks.ReentrantLock$NonfairSync)
> >>> >>
> >>> >> "RMI Scheduler(0)" #29 daemon prio=5 os_prio=0 cpu=0.00ms
> >>> elapsed=180.86s
> >>> >> tid=0x000001e34a462160 nid=0x1df0 waiting on condition
> >>> [0x000000340fcfe000]
> >>> >> java.lang.Thread.State: TIMED_WAITING (parking)
> >>> >> at jdk.internal.misc.Unsafe.park(java.base at 15-ea/Native
> >>> Method)
> >>> >> - parking to wait for <0x0000000602e1af00> (a
> >>> >>
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
> >>> >> at
> >>> >> java.util.concurrent.locks.LockSupport.parkNanos(java.base at 15-ea
> >>> >> /LockSupport.java:252)
> >>> >> at
> >>> >>
> >>>
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(java.base at 15-ea
> >>> >> /AbstractQueuedSynchronizer.java:1661)
> >>> >> at
> >>> >>
> >>>
> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(java.base at 15-ea
> >>> >> /ScheduledThreadPoolExecutor.java:1182)
> >>> >> at
> >>> >>
> >>>
> java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(java.base at 15-ea
> >>> >> /ScheduledThreadPoolExecutor.java:899)
> >>> >> at
> >>> java.util.concurrent.ThreadPoolExecutor.getTask(java.base at 15-ea
> >>> >> /ThreadPoolExecutor.java:1056)
> >>> >> at
> >>> >> java.util.concurrent.ThreadPoolExecutor.runWorker(java.base at 15-ea
> >>> >> /ThreadPoolExecutor.java:1116)
> >>> >> at
> >>> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base at 15-ea
> >>> >> /ThreadPoolExecutor.java:630)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "JMX server connection timeout 30" #30 daemon prio=5 os_prio=0
> >>> cpu=0.00ms
> >>> >> elapsed=180.86s tid=0x000001e34a45f610 nid=0x2fe8 in Object.wait()
> >>> >> [0x000000340fdff000]
> >>> >> java.lang.Thread.State: TIMED_WAITING (on object monitor)
> >>> >> at java.lang.Object.wait(java.base at 15-ea/Native Method)
> >>> >> - waiting on <no object reference available>
> >>> >> at
> >>> >>
> >>>
> com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(java.management at 15-ea
> >>> >> /ServerCommunicatorAdmin.java:171)
> >>> >> - locked <0x0000000602e1ca08> (a [I)
> >>> >> at java.lang.Thread.run(java.base at 15-ea/Thread.java:832)
> >>> >>
> >>> >> Locked ownable synchronizers:
> >>> >> - None
> >>> >>
> >>> >> "VM Thread" os_prio=2 cpu=515.63ms elapsed=341.79s
> >>> tid=0x000001e349031eb0
> >>> >> nid=0x540 runnable
> >>> >>
> >>> >> "GC Thread#0" os_prio=2 cpu=328.13ms elapsed=341.80s
> >>> >> tid=0x000001e31c218710 nid=0x19e8 runnable
> >>> >>
> >>> >> "GC Thread#1" os_prio=2 cpu=265.63ms elapsed=341.53s
> >>> >> tid=0x000001e349b353d0 nid=0x1cc4 runnable
> >>> >>
> >>> >> "GC Thread#2" os_prio=2 cpu=218.75ms elapsed=340.37s
> >>> >> tid=0x000001e349b350a0 nid=0x1ddc runnable
> >>> >>
> >>> >> "GC Thread#3" os_prio=2 cpu=187.50ms elapsed=338.82s
> >>> >> tid=0x000001e349b35700 nid=0x4a48 runnable
> >>> >>
> >>> >> "GC Thread#4" os_prio=2 cpu=140.63ms elapsed=338.82s
> >>> >> tid=0x000001e349b340b0 nid=0x32e8 runnable
> >>> >>
> >>> >> "GC Thread#5" os_prio=2 cpu=156.25ms elapsed=338.82s
> >>> >> tid=0x000001e349b35a30 nid=0x38cc runnable
> >>> >>
> >>> >> "GC Thread#6" os_prio=2 cpu=171.88ms elapsed=338.82s
> >>> >> tid=0x000001e349b35d60 nid=0x3ed0 runnable
> >>> >>
> >>> >> "G1 Main Marker" os_prio=2 cpu=0.00ms elapsed=341.80s
> >>> >> tid=0x000001e31c229930 nid=0x21c runnable
> >>> >>
> >>> >> "G1 Conc#0" os_prio=2 cpu=0.00ms elapsed=341.80s
> >>> tid=0x000001e31c22a5a0
> >>> >> nid=0x3920 runnable
> >>> >>
> >>> >> "G1 Refine#0" os_prio=2 cpu=0.00ms elapsed=341.80s
> >>> tid=0x000001e31c253f10
> >>> >> nid=0x1f84 runnable
> >>> >>
> >>> >> "G1 Young RemSet Sampling" os_prio=2 cpu=0.00ms elapsed=341.80s
> >>> >> tid=0x000001e31c254b90 nid=0x27ac runnable
> >>> >>
> >>> >> "VM Periodic Task Thread" os_prio=2 cpu=15.63ms elapsed=341.76s
> >>> >> tid=0x000001e349b39710 nid=0x838 waiting on condition
> >>> >>
> >>> >> JNI global refs: 33, weak refs: 0
> >>> >>
> >>> >> --
> >>> >> Aaron Scott-Boddendijk
> >>> >>
> >>> >> On Tue, Jun 16, 2020 at 10:15 AM Robert Field <
> >>> robert.field at oracle.com>
> >>> >> wrote:
> >>> >>
> >>> >>> Make that jps/jstack
> >>> >>>
> >>> >>> -R
> >>> >>>
> >>> >>> On 2020-06-15 15:12, Robert Field wrote:
> >>> >>> > Thanks for the report.
> >>> >>> >
> >>> >>> > What, if anything, is the Java stack for this thread (jps)?
> >>> >>> >
> >>> >>> > -Robert
> >>> >>> >
> >>> >>> >
> >>> >>> > On 2020-06-15 14:41, Aaron Scott-Boddendijk wrote:
> >>> >>> >> System:
> >>> >>> >> * Windows 10
> >>> >>> >> * Powershell
> >>> >>> >>
> >>> >>> >> When I start JShell, without executing anything, a CPU core is
> >>> always
> >>> >>> at
> >>> >>> >> 100% (a single thread though I haven't identified what it's
> >>> doing).
> >>> >>> >>
> >>> >>> >> The thread stack is as follows (with only the last two items
> >>> sometimes
> >>> >>> >> change - but I don't know the internals of the JVM to know if
> this
> >>> >>> >> useful
> >>> >>> >> or significant):
> >>> >>> >>
> >>> >>> >> ntoskrnl.exe!KeSynchronizeExecution+0x5b46
> >>> >>> >> ntoskrnl.exe!KeWaitForSingleObject+0x1c2d
> >>> >>> >> ntoskrnl.exe!KeWaitForSingleObject+0xab4
> >>> >>> >> ntoskrnl.exe!KeWaitForSingleObject+0x255
> >>> >>> >> ntoskrnl.exe!RtlClearBitsEx+0x15a7
> >>> >>> >> ntoskrnl.exe!KeWaitForSingleObject+0x3828
> >>> >>> >> ntoskrnl.exe!KeSynchronizeExecution+0x3120
> >>> >>> >> jvm.dll!c2v_notifyCompilerInliningEvent+0x201797
> >>> >>> >>
> >>> >>> >> The JDK 14 version of JShell does not have this issue but
> several
> >>> of
> >>> >>> the
> >>> >>> >> recent JDK 15 builds have done this.
> >>> >>> >>
> >>> >>> >> --
> >>> >>> >> Aaron Scott-Boddendijk
> >>> >>>
> >>> >>
> >>>
> >>
>
More information about the kulla-dev
mailing list