fully cancelable

L

Lew

Richard said:
But sadly, this post, like others, will invite typical "Well you shouldn't
be doing that anyway" or "If God wanted us to fly he would've given us
wings" responses from the usual wanker(s).

What is that, a pre-emptive /ad hominem/ attack so that anyone with the
temerity to disagree with any detail of your comments is dismissable /prima
facie/?

Not that I disagree with any of your comments necessarily, but hey, I'm an
unusual wanker.

By the way, it's spelled "Java", not "JAVA". ;-)
 
L

Lew

Richard Maher wrote:
....
No need to hypothesize! That's why I provided the SSCCE that is much
heralded here in cljp. Easy to compile, easy to run, easy to reproduce.
Funny thing is, once I responded with the SSCCE, evryone went quiet :-(

Except for who responded to it, of course, i.e. Chris Uppal, Jan Burse, but
other than those who responded everyone went quite. :)

Wait a minute, you were saying "everyone went quite" to a response! Is that
what they mean by an oxymoron?

....
Once again, very little code, very easy to reproduce and observe, very
little need for guesswork from the self-proclaimed illumni [?] present here
today.

Very pretty writing. Kudos. Not quite Ciceronian, but it's got style.
 
R

Richard Maher

HI Jan,

Jan Burse said:
The tread dump will list all threads, and their waits. You can
directly see deadlocks, eventually starvations, etc..
Here's the thread dump and list: -
[1]in getNum() 3681 caller [TO2] Thread Applet 1 LiveConnect Worker
ThreadThread[Applet 1 LiveConnect Worker
Thread,4,http://127.0.0.1/-threadGroup] hash c8f6f8
[1]Queueing work
[1]Going for wait
after take
before call
[1]in setBack() 3681 caller CB Thread
FredThread[Fred,4,http://127.0.0.1/-threadGroup] hash 11f2ee1
[1]After notify
after call
before take
[1]After wait call 3680
[1]in getNum() 3682 caller [TO3] Thread Applet 1 LiveConnect Worker
ThreadThread[Applet 1 LiveConnect Worker
Thread,4,http://127.0.0.1/-threadGroup] hash c8f6f8
[1]Queueing work
[1]Going for wait
after take
before call

Dump thread stack ...
----------------------------------------------------
2010-12-29 11:39:29
Full thread dump Java HotSpot(TM) Client VM (17.0-b17 mixed mode, sharing):

"Fred" daemon prio=4 tid=0x03564400 nid=0xa90 waiting for monitor entry
[0x041ff000]
java.lang.Thread.State: BLOCKED (on object monitor)
at Sleeper.getNum(Sleeper.java:69)
- waiting to lock <0x25511ab0> (a Sleeper)
at sun.reflect.GeneratedMethodAccessor4.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 OutThread.run(OutThread.java:39)

"thread applet-Sleeper-1" prio=4 tid=0x03522000 nid=0x168 in Object.wait()
[0x040bf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2540d108> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown
Source)
- locked <0x2540d108> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)

"ConsoleWriterThread" daemon prio=6 tid=0x0351f400 nid=0xa80 in
Object.wait() [0x0406f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at com.sun.deploy.util.ConsoleTraceListener$ConsoleWriterThread.run(Unknown
Source)
- locked <0x2540d110> (a java.lang.Object)

"TimerQueue" daemon prio=6 tid=0x03516000 nid=0xa78 in Object.wait()
[0x03fcf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2550cf50> (a javax.swing.TimerQueue)
at javax.swing.TimerQueue.run(Unknown Source)
- locked <0x2550cf50> (a javax.swing.TimerQueue)
at java.lang.Thread.run(Unknown Source)

"Windows Tray Icon Thread" prio=6 tid=0x03515800 nid=0xa50 runnable
[0x03f7f000]
java.lang.Thread.State: RUNNABLE
at com.sun.deploy.ui.WindowsJavaTrayIcon.mainLoop(Native Method)
at com.sun.deploy.ui.WindowsJavaTrayIcon.access$700(Unknown Source)
at com.sun.deploy.ui.WindowsJavaTrayIcon$2.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

"AWT-EventQueue-2" prio=4 tid=0x034d8000 nid=0xa4c in Object.wait()
[0x03f2f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2540d190> (a java.awt.EventQueue)
at java.lang.Object.wait(Object.java:485)
at java.awt.EventQueue.getNextEvent(Unknown Source)
- locked <0x2540d190> (a java.awt.EventQueue)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

"Applet 1 LiveConnect Worker Thread" prio=4 tid=0x034dec00 nid=0x358 in
Object.wait() [0x03e8f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at Sleeper.getNum(Sleeper.java:84)
- locked <0x25520560> (a java.lang.Object)
- locked <0x25511ab0> (a Sleeper)
at sun.reflect.GeneratedMethodAccessor4.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$PerAppletInfo$LiveConnectWorker.run(Unknown
Source)
at java.lang.Thread.run(Unknown Source)

"Browser Side Object Cleanup Thread" prio=6 tid=0x034e9400 nid=0xa00 in
Object.wait() [0x03e3f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2540d2d8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x2540d2d8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at
sun.plugin2.main.client.LiveConnectSupport$BrowserSideObjectCleanupThread.run(Unknown
Source)

"AWT-EventQueue-1" prio=6 tid=0x034c7c00 nid=0x93c runnable [0x03def000]
java.lang.Thread.State: RUNNABLE
at com.sun.deploy.util.ConsoleHelper.dumpAllStacksImpl(Native Method)
at com.sun.deploy.util.ConsoleHelper.dumpAllStacks(Unknown Source)
at sun.plugin2.applet.Plugin2ConsoleController.dumpAllStacks(Unknown
Source)
at com.sun.deploy.util.ConsoleWindow$2.actionPerformed(Unknown Source)
at javax.swing.JComponent$ActionStandin.actionPerformed(Unknown Source)
at javax.swing.SwingUtilities.notifyAction(Unknown Source)
at javax.swing.JComponent.processKeyBinding(Unknown Source)
at javax.swing.KeyboardManager.fireBinding(Unknown Source)
at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source)
at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown
Source)
at javax.swing.JComponent.processKeyBindings(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

"CacheCleanUpThread" daemon prio=6 tid=0x034c5800 nid=0x7b0 in Object.wait()
[0x03d9f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2540d610> (a com.sun.deploy.cache.CleanupThread)
at java.lang.Object.wait(Object.java:485)
at com.sun.deploy.cache.CleanupThread.run(Unknown Source)
- locked <0x2540d610> (a com.sun.deploy.cache.CleanupThread)

"CacheMemoryCleanUpThread" daemon prio=6 tid=0x034c1c00 nid=0x718 in
Object.wait() [0x03d4f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x2540d708> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown
Source)

"Java Plug-In Heartbeat Thread" prio=6 tid=0x034a6400 nid=0x588 waiting on
condition [0x03caf000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at sun.plugin2.main.client.PluginMain$HeartbeatThread.run(Unknown Source)

"AWT-EventQueue-0" prio=6 tid=0x034a5000 nid=0x7dc in Object.wait()
[0x03c0f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x2540d838> (a java.awt.EventQueue)
at java.lang.Object.wait(Object.java:485)
at java.awt.EventQueue.getNextEvent(Unknown Source)
- locked <0x2540d838> (a java.awt.EventQueue)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at jav
Trace message truncated for length over 10K

Dump thread list ...
Group main,ac=19,agc=2,pri=10
main,5,alive
traceMsgQueueThread,5,alive,daemon
Timer-0,5,alive
Java Plug-In Pipe Worker Thread (Client-Side),5,alive,daemon
AWT-Shutdown,5,alive
AWT-Windows,6,alive,daemon
AWT-EventQueue-0,6,alive
Java Plug-In Heartbeat Thread,5,alive
CacheMemoryCleanUpThread,5,alive,daemon
CacheCleanUpThread,5,alive,daemon
Browser Side Object Cleanup Thread,5,alive
Windows Tray Icon Thread,5,alive
ConsoleWriterThread,5,alive,daemon
Group Plugin Thread Group,ac=2,agc=0,pri=10
AWT-EventQueue-1,6,alive
TimerQueue,5,alive,daemon
Group http://127.0.0.1/-threadGroup,ac=4,agc=0,pri=4
Applet 1 LiveConnect Worker Thread,4,alive
AWT-EventQueue-2,4,alive
thread applet-Sleeper-1,4,alive
Fred,4,alive,daemon
Done.

Cheers Richard Maher
 
R

Richard Maher

Hi Chris,

Chris Uppal said:
Yes: that's what I /said/!

My apologies, misread that part on first pass of your post.
Look this is the greatest news for JAVA on the Web since it's GUI
capabilities were deserted in favour of Javascript,CSS,HTML5, and Flash
but the jaded and cynical "we're only on the server now" crowd here
refuse to embrace the possibility of JAVA on the web as faceless
infrastructure middleware. What my code seeks (and comes damned
close(there are *many* issues other than this)) to do is multiplex
background task output to multiple tabs [a]synchronously.

This is exciting! This is very worthy of investment! This is certainly
worthy of more than a priority 4 and 4 votes on a seemingly
Oracle-depracated bug-tracker :-(

But sadly, this post, like others, will invite typical "Well you
shouldn't
be doing that anyway" or "If God wanted us to fly he would've given us
wings" responses from the usual wanker(s).

I really have no idea what I've said to provoke that rant.

Not much of a rant, and not directed at you personally. It's just that an
issue that deserves to stand out in the bug crowd on all levels of interest,
technical challenge, and reproducibility is once again met with agressive
disinterest/denial from those here that proclaim to have the answers.

Hey, I'm happy to endure the humiliation of "You're a knob-head because,
among other things, you have a school-boy synchronization issue on blah" but
on theother hand, if it is a LiveConnect thread-scheduling bug, then why not
make a name for yourselves and improve the product at the same time? Even
easier, if you can't explain the behaviour of the SSCCE, why not just
increment the vote count?
It's not even as if I /do/ server-side Java...

Oh well, at least we've won the cricket!

A well deserved victory. We can't bat, we can't bowl, and we can't catch
:-( Still at least Ricky's gone (pinky or not)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,780
Messages
2,569,608
Members
45,241
Latest member
Lisa1997

Latest Threads

Top