Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JabRef 4.3.1 freeze on MacOS High Sierra, JDK 8u172 #4118

Closed
alanfranz opened this issue Jun 8, 2018 · 19 comments
Closed

JabRef 4.3.1 freeze on MacOS High Sierra, JDK 8u172 #4118

alanfranz opened this issue Jun 8, 2018 · 19 comments
Labels
platform: macos status: waiting-for-feedback The submitter or other users need to provide more information about the issue

Comments

@alanfranz
Copy link

alanfranz commented Jun 8, 2018

I'm opening this since the other High Sierra freezes seem unrelated.

When I start a clean JabRef 4.3.1 installation, click "open" to open a library, very quickly the application freezes. Please note that the CPU usage does not go crazy. I tried both the packaged app and the jar, no difference.

AlanEnerlife-mbpro:Downloads alan$ rm -rf ~/Library/Application\ Support/org.jabref.JabRefMain/ ~/Library/Preferences/org.jabref.*
AlanEnerlife-mbpro:Downloads alan$ java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
AlanEnerlife-mbpro:Downloads alan$ system_profiler SPSoftwareDataType
Software:

    System Software Overview:

      System Version: macOS 10.13.5 (17F77)
      Kernel Version: Darwin 17.6.0
      Boot Volume: Macintosh HD
      Boot Mode: Normal
      Computer Name: AlanEnerlife-mbpro
      User Name: Alan (alan)
      Secure Virtual Memory: Enabled
      System Integrity Protection: Enabled
      Time since boot: 1 day 7 minutes

AlanEnerlife-mbpro:Downloads alan$ java -jar JabRef-4.3.1.jar --debug --console
11:15:46.487 [AWT-EventQueue-0] DEBUG org.jabref.logic.logging.JabRefLogger - Showing debug messages
11:15:46.489 [AWT-EventQueue-0] DEBUG org.jabref.cli.ArgumentProcessor - Finished export
11:15:46.508 [AWT-EventQueue-0] DEBUG org.jabref.logic.remote.client.RemoteClient - Could not ping server at port 6050
java.net.ConnectException: Connection refused (Connection refused)
	at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_172]
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_172]
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_172]
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_172]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_172]
	at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_172]
	at java.net.Socket.connect(Socket.java:538) ~[?:1.8.0_172]
	at java.net.Socket.<init>(Socket.java:434) ~[?:1.8.0_172]
	at java.net.Socket.<init>(Socket.java:244) ~[?:1.8.0_172]
	at org.jabref.logic.remote.client.RemoteClient.openNewConnection(RemoteClient.java:64) ~[JabRef-4.3.1.jar:?]
	at org.jabref.logic.remote.client.RemoteClient.ping(RemoteClient.java:28) ~[JabRef-4.3.1.jar:?]
	at org.jabref.JabRefMain.handleMultipleAppInstances(JabRefMain.java:136) ~[JabRef-4.3.1.jar:?]
	at org.jabref.JabRefMain.start(JabRefMain.java:121) ~[JabRef-4.3.1.jar:?]
	at org.jabref.JabRefMain.lambda$start$0(JabRefMain.java:51) ~[JabRef-4.3.1.jar:?]
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) [?:1.8.0_172]
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) [?:1.8.0_172]
	at java.awt.EventQueue.access$500(EventQueue.java:97) [?:1.8.0_172]
	at java.awt.EventQueue$3.run(EventQueue.java:709) [?:1.8.0_172]
	at java.awt.EventQueue$3.run(EventQueue.java:703) [?:1.8.0_172]
	at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_172]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) [?:1.8.0_172]
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) [?:1.8.0_172]
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) [?:1.8.0_172]
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) [?:1.8.0_172]
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) [?:1.8.0_172]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:1.8.0_172]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) [?:1.8.0_172]
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) [?:1.8.0_172]
11:15:47.017 [AWT-EventQueue-0] DEBUG org.jabref.JabRefGUI - Initializing frame
File: grouptree.fxml not found, attempting with camel case
11:15:47.599 [JavaFX Application Thread] DEBUG org.jabref.gui.DefaultInjector - Instantiate org.jabref.gui.groups.GroupTreeController
File: grouptree.css not found, attempting with camel case
11:15:48.935 [AWT-EventQueue-0] DEBUG org.jabref.JabRefGUI - Finished adding panels

Screencast:

https://www.dropbox.com/s/k7jhz37nv8dm6y2/jabrefbug.mp4?dl=0

(please note: in the video you cannot see the spinning wheel, this seems a macos/quicktime capture behaviour, but then the video ends there's definitely a spinning wheel and I cannot click anywhere in jabref anymore)

Spindump:

https://www.dropbox.com/s/whzxqukxdhhgdec/jabref-spindump.txt?dl=0

I have tested the latest master version from http://builds.jabref.org/master/ and the problem disappears, BUT a freeze happens when I try to add a new entry.

I do not understand what's the port 6050 failed connection attempt, is it related?

@matthiasgeiger
Copy link
Member

This might bei related to an issue with the localhost mapping described in our FAQs Here: https://github.com/JabRef/help.jabref.org/blob/gh-pages/en/Installation.md#mac-os-and-oracle-java or in the issue #3227

@Siedlerchr Siedlerchr added the status: waiting-for-feedback The submitter or other users need to provide more information about the issue label Jun 10, 2018
@alanfranz
Copy link
Author

alanfranz commented Jun 11, 2018

Hello @matthiasgeiger and @Siedlerchr , I just double-checked, but I was pretty confident I had already the correct host entries in place. This is my current hosts file:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1	localhost AlanEnerlife-mbpro.local
255.255.255.255	broadcasthost
::1             localhost

Pinging works properly:

AlanEnerlife-mbpro:Downloads alan$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.043 ms
^C
--- localhost ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.043/0.043/0.043/0.000 ms
AlanEnerlife-mbpro:Downloads alan$ ping AlanEnerlife-mbpro.local
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.062 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.165 ms
^C
--- localhost ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.062/0.114/0.165/0.052 ms

After checking the DZone link from your page, I have tried building and and executing this file with the same JDK I'm running JabRef:

import java.net.InetAddress;

public class Main {

    public static void main(String[] args) throws Exception {
        InetAddress localHost = InetAddress.getLocalHost();


        System.out.println(localHost.getHostAddress());
        System.out.println(localHost.getCanonicalHostName());
    }
}

It works 100% and outputs:

127.0.0.1
localhost

I'm a software developer myself and I'm quite experienced with Java development, so, feel free to ask me whatever you might need to debug the issue.

@alanfranz
Copy link
Author

I just thought you may want a thread dump when the process is frozen:

Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.171-b11 mixed mode):

"ActiveTransmissionNetworkOutput_1-1" #47 daemon prio=6 os_prio=31 tid=0x00007fb9de0d2800 nid=0x1ba2b waiting on condition [0x0000700005fce000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c03b5170> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:403)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"SwingWorker-pool-9-thread-1" #44 daemon prio=5 os_prio=31 tid=0x00007fb9d5e78800 nid=0x1f91f waiting on condition [0x00007000068f2000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x000000076cca5f70> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"pool-3-thread-1" #43 prio=5 os_prio=31 tid=0x00007fb9dda60000 nid=0x1f803 waiting on condition [0x00007000067ef000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c03b2410> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"TransmitterImpl_1-1" #42 daemon prio=6 os_prio=31 tid=0x00007fb9da32f000 nid=0x1fa03 waiting on condition [0x00007000066ec000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c03b62a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"pool-8-thread-1" #41 prio=5 os_prio=31 tid=0x00007fb9df15a800 nid=0x10c93 waiting on condition [0x00007000065e9000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x000000076cc1e5e0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:403)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"Thread-17" #40 daemon prio=6 os_prio=31 tid=0x00007fb9df188800 nid=0x1fb73 waiting on condition [0x00007000064e6000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c03b7a58> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"Disposer" #39 daemon prio=10 os_prio=31 tid=0x00007fb9de099800 nid=0xf90b in Object.wait() [0x00007000060d1000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
	- locked <0x00000006c14fa078> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
	at com.sun.webkit.Disposer.run(Disposer.java:122)
	at java.lang.Thread.run(Thread.java:748)

"Prism Font Disposer" #35 daemon prio=10 os_prio=31 tid=0x00007fb9de15d800 nid=0x1025b in Object.wait() [0x0000700005ecb000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
	- locked <0x00000006c1291ed0> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
	at com.sun.javafx.font.Disposer.run(Disposer.java:93)
	at java.lang.Thread.run(Thread.java:748)

"ActiveTransmissionNetworkOutput_1-0" #33 daemon prio=6 os_prio=31 tid=0x00007fb9de99e800 nid=0x710f waiting on condition [0x0000700005dc8000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c03b5170> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:403)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"TimerQueue" #32 daemon prio=5 os_prio=31 tid=0x00007fb9d6212000 nid=0x1094f waiting on condition [0x0000700005cc5000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c13bb0b0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.DelayQueue.take(DelayQueue.java:211)
	at javax.swing.TimerQueue.run(TimerQueue.java:174)
	at java.lang.Thread.run(Thread.java:748)

"TransmitterImpl_1-0" #31 daemon prio=6 os_prio=31 tid=0x00007fb9d72c9800 nid=0x11d0b waiting on condition [0x0000700005b3f000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c03b62a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1081)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"Java2D Disposer" #30 daemon prio=10 os_prio=31 tid=0x00007fb9d73ae800 nid=0x12107 in Object.wait() [0x0000700005a3c000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
	- locked <0x00000006c04770c0> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
	at sun.java2d.Disposer.run(Disposer.java:148)
	at java.lang.Thread.run(Thread.java:748)

"Java2D Queue Flusher" #29 daemon prio=10 os_prio=31 tid=0x00007fb9d650e000 nid=0xeb07 in Object.wait() [0x0000700005939000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at sun.java2d.opengl.OGLRenderQueue$QueueFlusher.run(OGLRenderQueue.java:203)
	- locked <0x00000006c0479c10> (a sun.java2d.opengl.OGLRenderQueue$QueueFlusher)

"HeartBeatProvider_heartBeatSenderService-0" #28 daemon prio=6 os_prio=31 tid=0x00007fb9d5b37000 nid=0xe903 waiting on condition [0x0000700005836000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c03b36e8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"HeartBeatProvider_propertyUpdateService-0" #27 daemon prio=6 os_prio=31 tid=0x00007fb9d6379800 nid=0xe703 waiting on condition [0x0000700005733000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c03b2d90> (a java.util.concurrent.SynchronousQueue$TransferStack)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
	at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
	at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
	at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"ActiveTransmissionLoader-worker-0" #26 daemon prio=6 os_prio=31 tid=0x00007fb9d72bf800 nid=0x12903 waiting on condition [0x0000700005630000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
	at java.lang.Thread.sleep(Native Method)
	at com.microsoft.applicationinsights.internal.channel.common.ActiveTransmissionLoader.fetchNext(ActiveTransmissionLoader.java:178)
	at com.microsoft.applicationinsights.internal.channel.common.ActiveTransmissionLoader.access$300(ActiveTransmissionLoader.java:41)
	at com.microsoft.applicationinsights.internal.channel.common.ActiveTransmissionLoader$1.run(ActiveTransmissionLoader.java:108)
	at java.lang.Thread.run(Thread.java:748)

"pool-4-thread-1" #24 prio=5 os_prio=31 tid=0x00007fb9d62e9800 nid=0xe50b waiting on condition [0x000070000552d000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c03b5488> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"FileUpdateMonitor" #23 prio=6 os_prio=31 tid=0x00007fb9d634a000 nid=0x13203 waiting on condition [0x000070000542a000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c03b7288> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
	at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)
	at sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118)
	at org.jabref.gui.util.DefaultFileUpdateMonitor.run(DefaultFileUpdateMonitor.java:38)
	at org.jabref.JabRefExecutorService$NamedRunnable.run(JabRefExecutorService.java:162)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"timer" #22 daemon prio=6 os_prio=31 tid=0x00007fb9d6349000 nid=0x1340f in Object.wait() [0x0000700005327000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000006c049ded8> (a java.util.TaskQueue)
	at java.lang.Object.wait(Object.java:502)
	at java.util.TimerThread.mainLoop(Timer.java:526)
	- locked <0x00000006c049ded8> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:505)

"Timer-0" #20 daemon prio=6 os_prio=31 tid=0x00007fb9d5a9b800 nid=0xc307 in Object.wait() [0x0000700005224000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000006c03757e0> (a java.util.TaskQueue)
	at java.util.TimerThread.mainLoop(Timer.java:552)
	- locked <0x00000006c03757e0> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:505)

"AWT-EventQueue-0" #18 prio=6 os_prio=31 tid=0x00007fb9d7b34800 nid=0xd707 waiting on condition [0x000070000511f000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x000000076e17bb40> (a java.util.concurrent.FutureTask)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:429)
	at java.util.concurrent.FutureTask.get(FutureTask.java:191)
	at org.jabref.gui.util.DefaultTaskExecutor.runInJavaFXThread(DefaultTaskExecutor.java:36)
	at org.jabref.gui.importer.actions.OpenDatabaseAction.actionPerformed(OpenDatabaseAction.java:112)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:842)
	at com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:157)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:886)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
	at java.awt.Component.processMouseEvent(Component.java:6533)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6298)
	at java.awt.Container.processEvent(Container.java:2238)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2296)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4897)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4534)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4475)
	at java.awt.Container.dispatchEventImpl(Container.java:2282)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

"AWT-Shutdown" #19 prio=5 os_prio=31 tid=0x00007fb9d62b9000 nid=0x1370b in Object.wait() [0x000070000501e000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:295)
	- locked <0x00000006c05165f0> (a java.lang.Object)
	at java.lang.Thread.run(Thread.java:748)

"JavaFX-Launcher" #17 prio=5 os_prio=31 tid=0x00007fb9d6257000 nid=0x13e07 waiting on condition [0x0000700004f1b000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c0488fa8> (a java.util.concurrent.CountDownLatch$Sync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
	at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
	at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:873)
	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
	at com.sun.javafx.application.LauncherImpl$$Lambda$51/326549596.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:748)

"Thread-3" #14 daemon prio=5 os_prio=31 tid=0x00007fb9d802a000 nid=0x7e03 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"JavaFX Application Thread" #13 prio=5 os_prio=31 tid=0x00007fb9d718c000 nid=0x307 runnable [0x00007ffee9286000]
   java.lang.Thread.State: RUNNABLE
	at sun.lwawt.macosx.LWCToolkit.doAWTRunLoopImpl(Native Method)
	at sun.lwawt.macosx.LWCToolkit.doAWTRunLoop(LWCToolkit.java:825)
	at sun.lwawt.macosx.LWCToolkit.invokeAndWait(LWCToolkit.java:642)
	at sun.lwawt.macosx.LWCToolkit.invokeAndWait(LWCToolkit.java:581)
	at sun.lwawt.macosx.CAccessibility.invokeAndWait(CAccessibility.java:94)
	at sun.lwawt.macosx.CAccessibility.getAccessibleRole(CAccessibility.java:260)
	at com.sun.glass.ui.mac.MacApplication._enterNestedEventLoopImpl(Native Method)
	at com.sun.glass.ui.mac.MacApplication._enterNestedEventLoop(MacApplication.java:109)
	at com.sun.glass.ui.Application.enterNestedEventLoop(Application.java:511)
	at com.sun.glass.ui.EventLoop.enter(EventLoop.java:107)
	at com.sun.glass.ui.mac.MacCommonDialogs._showFileOpenChooser(Native Method)
	at com.sun.glass.ui.mac.MacCommonDialogs.showFileChooser_impl(MacCommonDialogs.java:59)
	at com.sun.glass.ui.mac.MacApplication.staticCommonDialogs_showFileChooser(MacApplication.java:264)
	at com.sun.glass.ui.CommonDialogs.showFileChooser(CommonDialogs.java:212)
	at com.sun.javafx.tk.quantum.QuantumToolkit.showFileChooser(QuantumToolkit.java:1503)
	at javafx.stage.FileChooser.showDialog(FileChooser.java:416)
	at javafx.stage.FileChooser.showOpenMultipleDialog(FileChooser.java:373)
	at org.jabref.gui.FXDialogService.showFileOpenDialogAndGetMultipleFiles(FXDialogService.java:179)
	at org.jabref.gui.importer.actions.OpenDatabaseAction.lambda$actionPerformed$0(OpenDatabaseAction.java:112)
	at org.jabref.gui.importer.actions.OpenDatabaseAction$$Lambda$831/1777688495.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
	at com.sun.javafx.application.PlatformImpl$$Lambda$49/81345201.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
	at com.sun.javafx.application.PlatformImpl$$Lambda$48/580024961.run(Unknown Source)
	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)

"Thread-1" #12 daemon prio=5 os_prio=31 tid=0x00007fb9d60df800 nid=0x5d0b in Object.wait() [0x0000700004b06000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at com.sun.glass.ui.InvokeLaterDispatcher.run(InvokeLaterDispatcher.java:126)
	- locked <0x00000006c0013d70> (a java.lang.StringBuilder)

"QuantumRenderer-0" #10 daemon prio=5 os_prio=31 tid=0x00007fb9d7869000 nid=0x5603 waiting on condition [0x0000700004a03000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c001bdf8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
	at java.lang.Thread.run(Thread.java:748)

"Service Thread" #9 daemon prio=9 os_prio=31 tid=0x00007fb9d6010800 nid=0x3c03 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread3" #8 daemon prio=9 os_prio=31 tid=0x00007fb9d5845800 nid=0x3d03 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread2" #7 daemon prio=9 os_prio=31 tid=0x00007fb9d585e800 nid=0x3e03 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=31 tid=0x00007fb9d7823800 nid=0x3603 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=31 tid=0x00007fb9d7013800 nid=0x4003 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=31 tid=0x00007fb9d7010800 nid=0x420b waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=31 tid=0x00007fb9d6024000 nid=0x4a03 in Object.wait() [0x00007000041eb000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
	- locked <0x00000006c0023508> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:212)

"Reference Handler" #2 daemon prio=10 os_prio=31 tid=0x00007fb9d6003800 nid=0x4b03 in Object.wait() [0x00007000040e8000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
	- locked <0x00000006c002cb38> (a java.lang.ref.Reference$Lock)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

"main" #1 prio=5 os_prio=31 tid=0x00007fb9d6005800 nid=0x2703 waiting on condition [0x00007000036c9000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c04891f8> (a java.util.concurrent.CountDownLatch$Sync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
	at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
	at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:200)
	at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:143)
	at javafx.application.Application.launch(Application.java:252)
	at org.jabref.JabRefMain.main(JabRefMain.java:45)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
	at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)

"VM Thread" os_prio=31 tid=0x00007fb9d585b000 nid=0x2f03 runnable

"GC task thread#0 (ParallelGC)" os_prio=31 tid=0x00007fb9d7004000 nid=0x2307 runnable

"GC task thread#1 (ParallelGC)" os_prio=31 tid=0x00007fb9d7004800 nid=0x2203 runnable

"GC task thread#2 (ParallelGC)" os_prio=31 tid=0x00007fb9d7005800 nid=0x2b03 runnable

"GC task thread#3 (ParallelGC)" os_prio=31 tid=0x00007fb9d5809800 nid=0x5403 runnable

"GC task thread#4 (ParallelGC)" os_prio=31 tid=0x00007fb9d7006000 nid=0x5303 runnable

"GC task thread#5 (ParallelGC)" os_prio=31 tid=0x00007fb9d7006800 nid=0x5103 runnable

"GC task thread#6 (ParallelGC)" os_prio=31 tid=0x00007fb9d7007000 nid=0x4f03 runnable

"GC task thread#7 (ParallelGC)" os_prio=31 tid=0x00007fb9d580a000 nid=0x2e03 runnable

"VM Periodic Task Thread" os_prio=31 tid=0x00007fb9d6011800 nid=0x3a03 waiting on condition

JNI global references: 2362

Heap
 PSYoungGen      total 170496K, used 59511K [0x000000076ab00000, 0x000000077a800000, 0x00000007c0000000)
  eden space 159744K, 37% used [0x000000076ab00000,0x000000076e51de08,0x0000000774700000)
  from space 10752K, 0% used [0x0000000775180000,0x0000000775180000,0x0000000775c00000)
  to   space 10752K, 0% used [0x0000000774700000,0x0000000774700000,0x0000000775180000)
 ParOldGen       total 175616K, used 29493K [0x00000006c0000000, 0x00000006cab80000, 0x000000076ab00000)
  object space 175616K, 16% used [0x00000006c0000000,0x00000006c1ccd778,0x00000006cab80000)
 Metaspace       used 63497K, capacity 66456K, committed 66816K, reserved 1105920K
  class space    used 9866K, capacity 10388K, committed 10496K, reserved 1048576K

@alanfranz
Copy link
Author

A couple additional info:

  • I tried the maintable-beta from the DMG; I got a freeze while running the INSTALLER (when I needed to choose file associations); then, I run the app. I got no freeze on opening the library, but I still got a freeze when trying to add a new entry
  • As I told you, I run a lot of Java apps and I develop java quite a lot... so I don't really think it's a specific strange issue with my system. I'd really like to use JabRef, let me know how I can help.

@Siedlerchr
Copy link
Member

Hi, thanks for your detailed report. Two things: There is
a ) currently an open thread leak in the 4.3.1 when you exit JabRef.
b ) currently a problem if there is an old jre left inside JabRef, the installer doesn't upgrade it. (see #4001 (comment))

For a) please ensure that you kill all remaining JabRef process in your task manager
b) First uninstall JabRef complete (not upgrade in the installer), and then reinstall it.

And the stack trace seems to refer to this line:

List<Path> chosenFiles = DefaultTaskExecutor
.runInJavaFXThread(() -> ds.showFileOpenDialogAndGetMultipleFiles(fileDialogConfiguration));
filesToOpen.addAll(chosenFiles);
where the Native File open dialog should be shown

And just a maybe stupid question, but on Windows I sometimes had the problem with javafx/swing dialogs, that the dialogs were hidden behind the main window, maybe there is a dialog somewhere in the background?

@Siedlerchr
Copy link
Member

Another question which just came to my mind: Do you use the Oracle Java version? We had problems with openjdk and mac in the past related to javafx
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

@alanfranz
Copy link
Author

Hello @Siedlerchr ! Thanks for your interest. In the very first message I wrote the steps I took to reproduce the issue, maybe you can find some info there as well.

  1. JDK: I'm using Oracle JDK 8u172
  2. I do kill JabRef when exiting
  3. I'm not using the packaged JabRef (I had the same issue with the packaged application, but I wanted to narrow my problems), I'm starting the 4.3.1 jar on the command line with java -jar ... so, no JDK issue here. I've tried full uninstall and reinstall, mind you, but it didn't change the behaviour.
  4. As you can see in the screencast, the Open File dialog IS shown properly; but, some seconds after showing, it freezes with a spinning wheel and I can't click anything (the spinning wheel doesn't show in the screencast, if you want a video from my phone I can do that).

thanks,

Alan

@alanfranz
Copy link
Author

An additional detail that could be interesting: when the application freezes, it's not hoarding up the CPU.

image

It looks something like a deadlock, to me.

@Siedlerchr
Copy link
Member

As I don't own a mac and it seems to work for others @halirutan @LinusDietz I am out of ideas. Sorry. Your last option would be debugging that code, but it really is odd.

@tobiasdiez
Copy link
Member

Since this issue is resolved in the latest master build (if I understand you correctly), I wouldn't invest to much energy in debugging. Concerning the other freeze when you add a new entry, please check that the "new entry dialog" does not hide behind the main window.

@alanfranz
Copy link
Author

@tobiasdiez if you prefer, I can close this ticket and open another one for the version on master, but, to me, it seems a very similar issue with the GUI, it's just triggered in another part.

@Siedlerchr
Copy link
Member

Allthough this might sound stupid, but have you checked with ALT+TAB (or whatever the Mac/OSX equivalent is for going through open window. I really did have this problem on Windows and Linux too.., and had to go with alt tab to switch to the window.
The application might appear freezed, but in fact it's a modal window somewhere hiding.

@alanfranz
Copy link
Author

@Siedlerchr I swear I checked. I'm a software developer myself, I usually understand this kind of issues. But why should another modal window appear when I'm selecting a file? That wouldn't make sense, to me.

It's interesting that the issue doesn't happen on my home mac (more or less the same machine, Macbook Pro 2015, same OS). I'm still perplexed I'm unable to debug the issue. I wonder what causes the spinning wheel of death without the high cpu usage, I think it's the first time it happended to me, ever. I would argue that the GUI thread is getting busy... doing something.

@tobiasdiez
Copy link
Member

@alanfranz Can you reproduce the freeze in the new entry dialog (in the master version)? In this case, can you please provide a thread dump for this as well. Many thanks.

(the problem with the file picker could be many thinks, swing vs javafx vs mac os integration)

@halirutan
Copy link
Collaborator

@alanfranz @tobiasdiez Just to chime in: I had a similar issue and when I remember correctly, it was a call from Swing to JavaFX and back to Swing that caused it. It was really hard to debug, because the app simply went into a freeze where one GUI thread was waiting on the other. But I'm not sure anymore about the details.

If @alanfranz checks the latest master and tells me if the issue is still present, I can check on both of my Macs.

@alanfranz
Copy link
Author

alanfranz commented Jun 14, 2018

Hello @halirutan , I just checked for "JabRef-4.4-dev--snapshot--2018-06-13--master--4e50f63af.jar". The problem on new entry still exists. Steps:

  • Launch the jar with oracle java 8u172
  • Create new biblatex library
  • Click Library -> New Entry. Nothing happens in the GUI, no dialog is created, total freeze with spinning wheel

Thread dump:

Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.172-b11 mixed mode):

"AWT-EventQueue-0" #40 prio=6 os_prio=31 tid=0x00007fe34e04a000 nid=0x842f waiting on condition [0x0000700008421000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c041a828> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.awt.EventQueue.getNextEvent(EventQueue.java:554)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:187)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

"AWT-Shutdown" #41 prio=5 os_prio=31 tid=0x00007fe34c2ad800 nid=0xc707 in Object.wait() [0x00007000078f8000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:295)
	- locked <0x00000006c0410238> (a java.lang.Object)
	at java.lang.Thread.run(Thread.java:748)

"pool-6-thread-1" #39 prio=5 os_prio=31 tid=0x00007fe34b500800 nid=0x11307 waiting on condition [0x0000700008ab7000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x000000076ed21d80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:403)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"Disposer" #36 daemon prio=10 os_prio=31 tid=0x00007fe34c087000 nid=0xd923 in Object.wait() [0x0000700008525000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x000000076ee927f8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
	- locked <0x000000076ee927f8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
	at com.sun.webkit.Disposer.run(Disposer.java:122)
	at java.lang.Thread.run(Thread.java:748)

"TimerQueue" #31 daemon prio=5 os_prio=31 tid=0x00007fe34b484000 nid=0xdb03 waiting on condition [0x000070000872b000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x000000076ee3dcf8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.DelayQueue.take(DelayQueue.java:211)
	at javax.swing.TimerQueue.run(TimerQueue.java:174)
	at java.lang.Thread.run(Thread.java:748)

"SwingWorker-pool-4-thread-1" #30 daemon prio=5 os_prio=31 tid=0x00007fe34b3f0800 nid=0x11a37 waiting on condition [0x0000700008628000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x000000076ee3d328> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"Java2D Queue Flusher" #27 daemon prio=10 os_prio=31 tid=0x00007fe345424800 nid=0xd507 in Object.wait() [0x000070000831f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at sun.java2d.opengl.OGLRenderQueue$QueueFlusher.run(OGLRenderQueue.java:203)
	- locked <0x00000006c03d8d48> (a sun.java2d.opengl.OGLRenderQueue$QueueFlusher)

"Java2D Disposer" #24 daemon prio=10 os_prio=31 tid=0x00007fe344c8d000 nid=0x12903 in Object.wait() [0x000070000821c000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000006c03d7468> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
	- locked <0x00000006c03d7468> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
	at sun.java2d.Disposer.run(Disposer.java:148)
	at java.lang.Thread.run(Thread.java:748)

"Prism Font Disposer" #23 daemon prio=10 os_prio=31 tid=0x00007fe344c23000 nid=0xce4b in Object.wait() [0x0000700008119000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000006c0410618> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
	- locked <0x00000006c0410618> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
	at com.sun.javafx.font.Disposer.run(Disposer.java:93)
	at java.lang.Thread.run(Thread.java:748)

"JabRef - Remote Listener Server on port 6050" #22 prio=5 os_prio=31 tid=0x00007fe345b1d000 nid=0x12a0b runnable [0x0000700008016000]
   java.lang.Thread.State: RUNNABLE
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
	at java.net.ServerSocket.implAccept(ServerSocket.java:545)
	at java.net.ServerSocket.accept(ServerSocket.java:513)
	at org.jabref.logic.remote.server.RemoteListenerServer.run(RemoteListenerServer.java:37)
	at org.jabref.logic.remote.server.RemoteListenerServerThread.run(RemoteListenerServerThread.java:32)

"FileUpdateMonitor" #21 prio=5 os_prio=31 tid=0x00007fe3441dd800 nid=0xcb03 waiting on condition [0x0000700007f13000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c0385270> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
	at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)
	at sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118)
	at org.jabref.gui.util.DefaultFileUpdateMonitor.run(DefaultFileUpdateMonitor.java:39)
	at org.jabref.JabRefExecutorService$NamedRunnable.run(JabRefExecutorService.java:162)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"timer" #20 daemon prio=5 os_prio=31 tid=0x00007fe344155000 nid=0xc81b in Object.wait() [0x0000700007e10000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000006c04075b0> (a java.util.TaskQueue)
	at java.lang.Object.wait(Object.java:502)
	at java.util.TimerThread.mainLoop(Timer.java:526)
	- locked <0x00000006c04075b0> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:505)

"Timer-0" #18 daemon prio=5 os_prio=31 tid=0x00007fe34534b800 nid=0x13b0b in Object.wait() [0x0000700007d0d000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000006c0410878> (a java.util.TaskQueue)
	at java.util.TimerThread.mainLoop(Timer.java:552)
	- locked <0x00000006c0410878> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:505)

"JavaFX-Launcher" #17 prio=5 os_prio=31 tid=0x00007fe347812800 nid=0x13a07 waiting on condition [0x0000700007c0a000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c04078d0> (a java.util.concurrent.CountDownLatch$Sync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
	at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
	at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:873)
	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
	at com.sun.javafx.application.LauncherImpl$$Lambda$51/326549596.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:748)

"Thread-3" #14 daemon prio=5 os_prio=31 tid=0x00007fe34494e800 nid=0x8203 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"JavaFX Application Thread" #13 prio=5 os_prio=31 tid=0x00007fe345049800 nid=0x307 in Object.wait() [0x00007ffeebfa3000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:264)
	- locked <0x00000006c04051c8> (a java.awt.Component$AWTTreeLock)
	at java.awt.Dialog.show(Dialog.java:1084)
	at java.awt.Component.show(Component.java:1671)
	at java.awt.Component.setVisible(Component.java:1623)
	at java.awt.Window.setVisible(Window.java:1014)
	at java.awt.Dialog.setVisible(Dialog.java:1005)
	at org.jabref.gui.actions.NewEntryAction.execute(NewEntryAction.java:46)
	at org.jabref.gui.actions.JabRefAction.lambda$new$2(JabRefAction.java:28)
	at org.jabref.gui.actions.JabRefAction$$Lambda$173/1614135062.accept(Unknown Source)
	at org.controlsfx.control.action.Action.handle(Action.java:419)
	at org.controlsfx.control.action.Action.handle(Action.java:64)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
	at javafx.event.Event.fireEvent(Event.java:198)
	at javafx.scene.control.MenuItem.fire(MenuItem.java:462)
	at com.sun.javafx.scene.control.GlobalMenuAdapter.lambda$bindMenuItemProperties$20(GlobalMenuAdapter.java:153)
	at com.sun.javafx.scene.control.GlobalMenuAdapter$$Lambda$262/807052699.handle(Unknown Source)
	at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
	at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
	at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
	at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
	at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
	at javafx.event.Event.fireEvent(Event.java:198)
	at javafx.scene.control.MenuItem.fire(MenuItem.java:462)
	at com.sun.javafx.tk.quantum.GlassSystemMenu$1.action(GlassSystemMenu.java:238)

"Thread-1" #12 daemon prio=5 os_prio=31 tid=0x00007fe344948800 nid=0x9d0b in Object.wait() [0x00007000077f5000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at com.sun.glass.ui.InvokeLaterDispatcher.run(InvokeLaterDispatcher.java:126)
	- locked <0x00000006c001c1e0> (a java.lang.StringBuilder)

"QuantumRenderer-0" #10 daemon prio=5 os_prio=31 tid=0x00007fe3440e1000 nid=0x5603 waiting on condition [0x00007000076f2000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c0018950> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
	at java.lang.Thread.run(Thread.java:748)

"Service Thread" #9 daemon prio=9 os_prio=31 tid=0x00007fe34500e000 nid=0x4303 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread3" #8 daemon prio=9 os_prio=31 tid=0x00007fe34500b000 nid=0x4203 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread2" #7 daemon prio=9 os_prio=31 tid=0x00007fe34500a000 nid=0x4703 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=31 tid=0x00007fe344827800 nid=0x4903 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=31 tid=0x00007fe344052800 nid=0x4a03 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=31 tid=0x00007fe344017800 nid=0x3e0b waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=31 tid=0x00007fe345807000 nid=0x3503 in Object.wait() [0x0000700006eda000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000006c00247d8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
	- locked <0x00000006c00247d8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)

"Reference Handler" #2 daemon prio=10 os_prio=31 tid=0x00007fe345806000 nid=0x4f03 in Object.wait() [0x0000700006dd7000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000006c003e9b8> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:502)
	at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
	- locked <0x00000006c003e9b8> (a java.lang.ref.Reference$Lock)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

"main" #1 prio=5 os_prio=31 tid=0x00007fe344808800 nid=0x2603 waiting on condition [0x00007000063b8000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000006c044add8> (a java.util.concurrent.CountDownLatch$Sync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
	at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
	at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:200)
	at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:143)
	at javafx.application.Application.launch(Application.java:252)
	at org.jabref.JabRefMain.main(JabRefMain.java:44)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
	at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)

"VM Thread" os_prio=31 tid=0x00007fe345035000 nid=0x5003 runnable 

"GC task thread#0 (ParallelGC)" os_prio=31 tid=0x00007fe345003800 nid=0x2007 runnable 

"GC task thread#1 (ParallelGC)" os_prio=31 tid=0x00007fe345004000 nid=0x2203 runnable 

"GC task thread#2 (ParallelGC)" os_prio=31 tid=0x00007fe345004800 nid=0x5403 runnable 

"GC task thread#3 (ParallelGC)" os_prio=31 tid=0x00007fe344002000 nid=0x5303 runnable 

"GC task thread#4 (ParallelGC)" os_prio=31 tid=0x00007fe344002800 nid=0x2d03 runnable 

"GC task thread#5 (ParallelGC)" os_prio=31 tid=0x00007fe344018800 nid=0x2f03 runnable 

"GC task thread#6 (ParallelGC)" os_prio=31 tid=0x00007fe344019000 nid=0x3103 runnable 

"GC task thread#7 (ParallelGC)" os_prio=31 tid=0x00007fe34401a000 nid=0x5103 runnable 

"VM Periodic Task Thread" os_prio=31 tid=0x00007fe344021800 nid=0x4403 waiting on condition 

JNI global references: 1829

Heap
 PSYoungGen      total 76288K, used 18494K [0x000000076ab00000, 0x0000000770f80000, 0x00000007c0000000)
  eden space 65536K, 11% used [0x000000076ab00000,0x000000076b293520,0x000000076eb00000)
  from space 10752K, 99% used [0x000000076eb00000,0x000000076f57c410,0x000000076f580000)
  to   space 10752K, 0% used [0x0000000770500000,0x0000000770500000,0x0000000770f80000)
 ParOldGen       total 195072K, used 15130K [0x00000006c0000000, 0x00000006cbe80000, 0x000000076ab00000)
  object space 195072K, 7% used [0x00000006c0000000,0x00000006c0ec6980,0x00000006cbe80000)
 Metaspace       used 50008K, capacity 52334K, committed 52608K, reserved 1093632K
  class space    used 7545K, capacity 7959K, committed 8064K, reserved 1048576K

@jimjianghk
Copy link

Any updates on this? Jabref has been unusable for me for a while...

@halirutan
Copy link
Collaborator

As far as I can see, the hang happens in the Swing dialog the is called to select the "Entry Type" of the new entry. It should be similar to the many other issues we had when mixing Swing and FX. What seems to happen is that the "new Entry" command itself is an FX worker which then calls a Swing dialog. The code where this happens is here

EntryTypeDialog typeChoiceDialog = new EntryTypeDialog(jabRefFrame);
typeChoiceDialog.setVisible(true);

The application freezes when setting the dialog visible.

When my information is still correct, we have aquired a bunch of people who are willing to work on transforming the Swing dialogs. Maybe someone can point them to org.jabref.gui.EntryTypeDialog so that this is transformed first.

Btw, the only method for creating a new entry seems to be to use the toolbar.

@tobiasdiez
Copy link
Member

Thanks @halirutan for the investigation!

This should be fixed in the latest development version. Could you please check the build from http://builds.jabref.org/master/. Thanks! Please remember to make a backup of your library before trying-out this version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
platform: macos status: waiting-for-feedback The submitter or other users need to provide more information about the issue
Projects
None yet
Development

No branches or pull requests

6 participants