Note that there are some explanatory texts on larger screens.

plurals
  1. POHow can I decouple java to javascript calls? Applet is waiting on itself!
    primarykey
    data
    text
    <p>I am having trouble avoiding a sporadic crash in my applet that appears to be caused by a thread waiting on itself. Strangely, this only seems to happen in google chrome.</p> <p><strong>30-second read:</strong></p> <ul> <li>Applet.methodA() calls JSObject.javascriptMethod()</li> <li>javascriptMethod() makes a Applet.methodB() call</li> <li>Applet.methodB() waits for Applet.methodA() to release its lock, which never happens..</li> </ul> <p><strong>What I've Tried:</strong></p> <ul> <li>using setTimeout in javascriptMethod. no luck there.</li> <li>using JSObject.eval() instead of JSObject.call()</li> </ul> <p><strong>Also possible:</strong> that i've totally misinterpreted the thread dump. Here it is for inspection.</p> <p>My understanding:</p> <ol> <li>The sequencer thread calls applet.notifyPosition</li> <li>notifyPosition calls a javascript method</li> <li>javascript method calls applet.pause</li> <li><p>applet.pause needs to lock the sequencer, but can't because it's busy calling notifyposition..</p> <pre><code>"Java Sound Sequencer" prio=8 tid=0x189de400 nid=0x86c in Object.wait() [0x1c6ae000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on &lt;0x099c50e0&gt; (a java.lang.Object) at com.sun.media.sound.RealTimeSequencer$PlayThread.stop(Unknown Source) - locked &lt;0x099c50e0&gt; (a java.lang.Object) - locked &lt;0x099c50e8&gt; (a com.sun.media.sound.RealTimeSequencer$PlayThread) at com.sun.media.sound.RealTimeSequencer.implStop(Unknown Source) at com.sun.media.sound.RealTimeSequencer.stop(Unknown Source) - locked &lt;0x099c8ca8&gt; (a com.sun.media.sound.RealTimeSequencer) at net.alphatab.midi.MidiPlayer.pause(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.plugin.javascript.JSInvoke.invoke(Unknown Source) at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source) at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source) at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source) at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source) at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source) at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown Source) at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown Source) at sun.plugin2.main.client.LiveConnectSupport.doObjectOp(Unknown Source) at sun.plugin2.main.client.MessagePassingJSObject.waitForReply(Unknown Source) at sun.plugin2.main.client.MessagePassingJSObject.call(Unknown Source) at net.alphatab.midi.MidiPlayer.notifyPosition(Unknown Source) at net.alphatab.midi.MidiPlayer.access$200(Unknown Source) at net.alphatab.midi.MidiPlayer$1.controlChange(Unknown Source) at net.alphatab.midi.TickNotifierReceiver.send(Unknown Source) at com.sun.media.sound.AbstractMidiDevice$TransmitterList.sendMessage(Unknown Source) - locked &lt;0x0982d8e8&gt; (a java.util.ArrayList) at com.sun.media.sound.RealTimeSequencer$DataPump.dispatchMessage(Unknown Source) at com.sun.media.sound.RealTimeSequencer$DataPump.pump(Unknown Source) - locked &lt;0x09a56ae8&gt; (a com.sun.media.sound.RealTimeSequencer$DataPump) at com.sun.media.sound.RealTimeSequencer$PlayThread.run(Unknown Source) at java.lang.Thread.run(Unknown Source) </code></pre></li> </ol>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload