Chucktesejme
Chucktesejme

Reputation: 93

Applet on Mac OS X 10.9.4. hangs on CAccessible.selectionChanged()

Our java applet sometimes hangs when working with dialog on Mac OS X 10.9.4. always with same thread dump:

"AWT-EventQueue-2" prio=5 tid=0x00007fb599138800 nid=0xbd03 runnable [0x000000010fa75000]
           java.lang.Thread.State: RUNNABLE
            at sun.lwawt.macosx.CAccessible.selectionChanged(Native Method)
            at sun.lwawt.macosx.CAccessible.access$300(CAccessible.java:44)
            at sun.lwawt.macosx.CAccessible$AXTextChangeNotifier.caretUpdate(CAccessible.java:138)
            at javax.swing.text.JTextComponent.fireCaretUpdate(JTextComponent.java:407)
            at javax.swing.text.JTextComponent$MutableCaretEvent.fire(JTextComponent.java:4417)
            at javax.swing.text.JTextComponent$MutableCaretEvent.mouseReleased(JTextComponent.java:4473)
            at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
            at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
            at java.awt.Component.processMouseEvent(Component.java:6516)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
            at java.awt.Component.processEvent(Component.java:6281)
            at java.awt.Container.processEvent(Container.java:2229)
            at java.awt.Component.dispatchEventImpl(Component.java:4872)
            at java.awt.Container.dispatchEventImpl(Container.java:2287)
            at java.awt.Component.dispatchEvent(Component.java:4698)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
            at java.awt.Container.dispatchEventImpl(Container.java:2273)
            at java.awt.Window.dispatchEventImpl(Window.java:2719)
            at java.awt.Component.dispatchEvent(Component.java:4698)
            at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
            at java.awt.EventQueue.access$200(EventQueue.java:103)
            at java.awt.EventQueue$3.run(EventQueue.java:694)
            at java.awt.EventQueue$3.run(EventQueue.java:692)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
            at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
            at java.awt.EventQueue$4.run(EventQueue.java:708)
            at java.awt.EventQueue$4.run(EventQueue.java:706)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
            at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
            at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
            at java.awt.Dialog.show(Dialog.java:1082)
            at java.awt.Component.show(Component.java:1655)
            at java.awt.Component.setVisible(Component.java:1607)
            at java.awt.Window.setVisible(Window.java:1014)
            at java.awt.Dialog.setVisible(Dialog.java:1005)

    "RMI TCP Connection(11)-127.0.0.1" daemon prio=5 tid=0x00007fb59989a800 nid=0x11f03 runnable [0x000000011a78f000]
       java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:152)
        at java.net.SocketInputStream.read(SocketInputStream.java:122)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
        - locked <0x00000007f61dbab8> (a java.io.BufferedInputStream)
        at java.io.FilterInputStream.read(FilterInputStream.java:83)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:538)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

       Locked ownable synchronizers:
        - <0x00000007fecbf608> (a java.util.concurrent.ThreadPoolExecutor$Worker)

    "RMI TCP Connection(9)-127.0.0.1" daemon prio=5 tid=0x00007fb599404800 nid=0x11d03 runnable [0x000000011a68c000]
       java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:152)
        at java.net.SocketInputStream.read(SocketInputStream.java:122)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
        - locked <0x00000007f635acf0> (a java.io.BufferedInputStream)
        at java.io.FilterInputStream.read(FilterInputStream.java:83)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:538)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

       Locked ownable synchronizers:
        - <0x00000007fecc0c90> (a java.util.concurrent.ThreadPoolExecutor$Worker)

    "RMI TCP Accept-0" daemon prio=5 tid=0x00007fb59cb8a000 nid=0xdb4f runnable [0x0000000117eb6000]
       java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
        at java.net.ServerSocket.implAccept(ServerSocket.java:530)
        at java.net.ServerSocket.accept(ServerSocket.java:498)
        at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:52)
        at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:388)
        at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:360)
        at java.lang.Thread.run(Thread.java:745)

       Locked ownable synchronizers:
        - None

    "Java Plug-In Pipe Worker Thread (Client-Side)" daemon prio=5 tid=0x00007fb59a137800 nid=0xab07 runnable [0x000000010f0f8000]
       java.lang.Thread.State: RUNNABLE
        at com.sun.deploy.net.socket.UnixSocketImpl.unStreamSocketRead(Native Method)
        at com.sun.deploy.net.socket.UnixDomainSocket.read(Unknown Source)
        at com.sun.deploy.net.socket.UnixDomainSocket.read(Unknown Source)
        at sun.plugin2.ipc.unix.DomainSocketNamedPipe.read(Unknown Source)
        at sun.plugin2.message.transport.NamedPipeTransport$SerializerImpl.read(Unknown Source)
        at sun.plugin2.message.transport.NamedPipeTransport$SerializerImpl.readByte(Unknown Source)
        at sun.plugin2.message.AbstractSerializer.readInt(Unknown Source)
        at sun.plugin2.message.transport.SerializingTransport.read(Unknown Source)
        at sun.plugin2.message.Pipe$WorkerThread.run(Unknown Source)

       Locked ownable synchronizers:
        - None

    "AppKit Thread" daemon prio=5 tid=0x00007fb5990b0800 nid=0xd07 runnable [0x00007fff5e484000]
       java.lang.Thread.State: RUNNABLE
        at sun.lwawt.macosx.LWCToolkit.doAWTRunLoop(Native Method)
        at sun.lwawt.macosx.LWCToolkit.invokeAndWait(LWCToolkit.java:570)
        at sun.lwawt.macosx.LWCToolkit.invokeAndWait(LWCToolkit.java:511)
        at sun.lwawt.macosx.CAccessibility.invokeAndWait(CAccessibility.java:75)
        at sun.lwawt.macosx.CAccessibility.accessibilityHitTest(CAccessibility.java:388)

       Locked ownable synchronizers:
        - None

It hangs in Native method CAccessible.selectionChanged().

Hangs are unpredictable but always when user work with dialogs. Hangs start from Java 7 Update 55, older java versions or other OS (windows, linux) run without this problem.

OS = Mac OS X 10.9.4

Java = started at Java 7u55, simulated at 7u67 and Java 8 as well.

I can't find anything for this issue, any help ? Thank you...

Upvotes: 3

Views: 760

Answers (2)

PerryAJ
PerryAJ

Reputation: 106

Ran into this problem in Java 8u65. Came across this standing OpenJDK ticket:

https://bugs.openjdk.java.net/browse/JDK-8068222

The comments of the bug report mention that the issue might arise from OSX's VoiceOver accessibility feature. Disabling voiceover does nothing to resolve the issue and thread locks continue to occur, eventually locking up the application completely.

However, with further searching, I came across this SO question which hinted at possible issues with application accessibility issues. I followed the answer in that post and disabled all the applications in System Preferences > Security & Privacy > Accessibility and did not incur the error again. I was able to identify the problematic application by re-enabling applications one by one and testing over time. Not an ideal solution, but a functional workaround in my case.

Upvotes: 2

user2276550
user2276550

Reputation: 283

use SwingUtilitys.invokeAndWait as warpper. See http://springflex.blogspot.com/2014/09/my-practices-to-resolve-applet-stuck.html for more detail.

Upvotes: -1

Related Questions