It looks like a condition is waiting to be met where a JVM resource has some sort of contention with another resource in a referenced object that points to the same resource on multiple threads??
I was right on the method in question, but I don't completely understand because the thread is still considered Runnable. It also looks like it is attempting to read a file in some parts (my knowledge of this is based upon incredibly light research though... now my interest is peaked to be sure!
Anyway that would make sense if the file was, for instance, in a shared folder or *possibly* if merging were present at the moment both the threads were run but that's a very, very loosely educated guess. And even still, its a mod-added faction so it wouldn't be file merging with a vanilla faction anyway... and those all work. But, that could be irrelevant to what's
actually happening here and from what I've gather its very operating system dependent. I'm on windows 10 if that helps at all.
There is a seemingly good article about this I will read up on to find out more in case its helpful.
These seem like the most relevant parts:
"Thread-3" prio=6 tid=0x000000000c3bf800 nid=0x53e4 runnable [0x000000000d0ae000]
java.lang.Thread.State: RUNNABLE
at com.fs.starfarer.api.impl.campaign.graid.ShipWeaponsGroundRaidObjectivePluginIm
pl.performRaid(ShipWeaponsGroundRaidObjectivePluginImpl.java:300)
"RMI Scheduler(0)" daemon prio=6 tid=0x000000004fcf6800 nid=0x8c08 waiting on condition [0x0000000011b4e000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000a4389c78> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
"Reference Handler" daemon prio=10 tid=0x0000000009eb6800 nid=0x3d08 in Object.wait() [0x000000000b25f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000a060e458> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:503)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <0x00000000a060e458> (a java.lang.ref.Reference$Lock)
Full Thread Dump:
Spoiler
"RMI TCP Connection(3)-192.168.1.84" daemon prio=6 tid=0x00000000163a5000 nid=0x2910 runnable [0x0000000024fce000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
- locked <0x00000000a45fa4c8> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- <0x00000000a45fa688> (a java.util.concurrent.ThreadPoolExecutor$Worker)
"JMX server connection timeout 27" daemon prio=6 tid=0x000000000c782000 nid=0x65e8 in Object.wait() [0x0000000024dcf000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000a4386408> (a [I)
at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(Unknown Source)
- locked <0x00000000a4386408> (a [I)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"RMI Scheduler(0)" daemon prio=6 tid=0x000000004fcf6800 nid=0x8c08 waiting on condition [0x0000000011b4e000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000a4389c78> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"RMI TCP Accept-0" daemon prio=6 tid=0x0000000017481000 nid=0x5de4 runnable [0x00000000010de000]
java.lang.Thread.State: RUNNABLE
at java.net.DualStackPlainSocketImpl.accept0(Native Method)
at java.net.DualStackPlainSocketImpl.socketAccept(Unknown Source)
at java.net.AbstractPlainSocketImpl.accept(Unknown Source)
at java.net.PlainSocketImpl.accept(Unknown Source)
- locked <0x00000000a43a3e00> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"Thread-8" prio=6 tid=0x000000000c731000 nid=0x23c waiting on condition [0x0000000010e2f000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at sound.OooO$2.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"Thread-4" daemon prio=6 tid=0x000000000bf5d000 nid=0x2b4c waiting on condition [0x000000000d59f000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.fs.starfarer.combat.CombatMain$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"Thread-3" prio=6 tid=0x000000000c3bf800 nid=0x53e4 runnable [0x000000000d0ae000]
java.lang.Thread.State: RUNNABLE
at com.fs.starfarer.api.impl.campaign.graid.ShipWeaponsGroundRaidObjectivePluginIm pl.performRaid(ShipWeaponsGroundRaidObjectivePluginImpl.java:300)
at com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.performRaid(MarketCMD.java:1876)
at com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.raidConfirm(MarketCMD.java:1735)
at com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.execute(MarketCMD.java:346)
at com.fs.starfarer.campaign.rules.super.execute(Unknown Source)
at com.fs.starfarer.campaign.rules.C.runScript(Unknown Source)
at com.fs.starfarer.api.impl.campaign.rulecmd.FireBest.applyRule(FireBest.java:106)
at com.fs.starfarer.api.impl.campaign.rulecmd.FireBest.execute(FireBest.java:51)
at com.fs.starfarer.api.impl.campaign.rulecmd.FireBest.fire(FireBest.java:57)
at com.fs.starfarer.api.impl.campaign.RuleBasedInteractionDialogPluginImpl.fireBes t(RuleBasedInteractionDialogPluginImpl.java:177)
at com.fs.starfarer.api.impl.campaign.RuleBasedInteractionDialogPluginImpl.optionS elected(RuleBasedInteractionDialogPluginImpl.java:210)
at com.fs.starfarer.ui.newui.Stringsuper$1.o00000(Unknown Source)
at com.fs.starfarer.ui.newui.OoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.actionPerformed(Unknown Source)
at com.fs.starfarer.ui.newnew.buttonPressed(Unknown Source)
at com.fs.starfarer.ui.I.Ò00000(Unknown Source)
at com.fs.starfarer.ui.I.processInput(Unknown Source)
at com.fs.starfarer.ui.Stringsuper.super(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"DestroyJavaVM" prio=6 tid=0x0000000002d60800 nid=0x48d8 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"AWT-Windows" daemon prio=6 tid=0x000000000c3c0800 nid=0x99f0 runnable [0x000000000d2ae000]
java.lang.Thread.State: RUNNABLE
at sun.awt.windows.WToolkit.eventLoop(Native Method)
at sun.awt.windows.WToolkit.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"Java2D Disposer" daemon prio=10 tid=0x000000000c2b6800 nid=0x60d8 in Object.wait() [0x000000000ceae000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000a07bbaf8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x00000000a07bbaf8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at sun.java2d.Disposer.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
"Service Thread" daemon prio=6 tid=0x0000000009f0e000 nid=0x3cb4 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"C2 CompilerThread1" daemon prio=8 tid=0x0000000009efe800 nid=0xa408 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"C2 CompilerThread0" daemon prio=8 tid=0x0000000009efd000 nid=0x9b78 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Attach Listener" daemon prio=10 tid=0x0000000009efc000 nid=0x91c8 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Signal Dispatcher" daemon prio=10 tid=0x0000000009ef9000 nid=0x8778 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"Finalizer" daemon prio=8 tid=0x0000000009ec0800 nid=0x95d0 in Object.wait() [0x000000000b45e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000a060e838> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x00000000a060e838> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
Locked ownable synchronizers:
- None
"Reference Handler" daemon prio=10 tid=0x0000000009eb6800 nid=0x3d08 in Object.wait() [0x000000000b25f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000a060e458> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:503)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
- locked <0x00000000a060e458> (a java.lang.ref.Reference$Lock)
Locked ownable synchronizers:
- None
"VM Thread" prio=10 tid=0x0000000009eb2800 nid=0x52e0 runnable
"GC task thread#0 (ParallelGC)" prio=6 tid=0x0000000002d77800 nid=0x77d8 runnable
"GC task thread#1 (ParallelGC)" prio=6 tid=0x0000000002d79000 nid=0x59e8 runnable
"GC task thread#2 (ParallelGC)" prio=6 tid=0x0000000002d7b000 nid=0x8d6c runnable
"GC task thread#3 (ParallelGC)" prio=6 tid=0x0000000002d7c800 nid=0x4428 runnable
"VM Periodic Task Thread" prio=10 tid=0x0000000009f21000 nid=0x5e04 waiting on condition
JNI global references: 276
And here is a snippet of the threads in the thread monitor with the timestamp that I killed the application in case that is also useful: