Closed
Bug 506794
Opened 16 years ago
Closed 15 years ago
loading javafx.com hangs after a few page refresh
Categories
(Plugins Graveyard :: Java (Java Embedding Plugin), defect)
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: thomas.v.ng, Assigned: smichaud)
References
()
Details
Attachments
(12 files)
|
159.25 KB,
text/plain
|
Details | |
|
143.32 KB,
text/plain
|
Details | |
|
145.01 KB,
text/plain
|
Details | |
|
53.34 KB,
text/plain
|
Details | |
|
57.35 KB,
text/plain
|
Details | |
|
50.71 KB,
text/plain
|
Details | |
|
64.99 KB,
text/plain
|
Details | |
|
58.93 KB,
text/plain
|
Details | |
|
37.19 KB,
text/plain
|
Details | |
|
42.81 KB,
text/plain
|
Details | |
|
51.29 KB,
text/plain
|
Details | |
|
30.97 KB,
text/plain
|
Details |
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19
Build Identifier: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1
Refreshing javafx.com main page a few times cause firefox to hang
Reproducible: Always
Steps to Reproduce:
1. Open a few tabs and load some content, cnn.com, wired.com, etc
2. open a new tab to javafx.com, this will trigger loading of javafx applet
3. click yes on any security dialog pop up
4. refresh a few times, browser will hang
this only happens with the MRJ plugin on MacOS; windows works fine.
Also, if switch to new plugin on MacOS, bug cannot be reproduced.
Expected Results:
browser/plugin should not hang
Date/Time: 2009-07-27 16:41:28 -0700
OS Version: 10.5.7 (Build 9J61)
Architecture: i386
Report Version: 4
Command: Firefox
Path: /Applications/Firefox.app/Contents/MacOS/firefox-bin
Version: 3.5.1 (3.5.1)
Parent: launchd [117]
PID: 4259
Event: hang
Time: 9.39s
Steps: 47
Process: firefox-bin [4259]
Path: /Applications/Firefox.app/Contents/MacOS/firefox-bin
ADDRESS BINARY
00001000 /Applications/Firefox.app/Contents/MacOS/firefox-bin
00006000 /Applications/Firefox.app/Contents/MacOS/libxpcom.dylib
0000b000 /Applications/Firefox.app/Contents/MacOS/libplds4.dylib
00014000 /Applications/Firefox.app/Contents/MacOS/libplc4.dylib
00035000 /Applications/Firefox.app/Contents/MacOS/libnspr4.dylib
00071000 /Applications/Firefox.app/Contents/MacOS/libsmime3.dylib
0008f000 /Applications/Firefox.app/Contents/MacOS/libssl3.dylib
000de000 /Applications/Firefox.app/Contents/MacOS/libmozjs.dylib
001bc000 /Applications/Firefox.app/Contents/MacOS/libsqlite3.dylib
0022d000 /Applications/Firefox.app/Contents/MacOS/libnss3.dylib
002f9000 /Applications/Firefox.app/Contents/MacOS/libnssutil3.dylib
0030f000 /Applications/Firefox.app/Contents/MacOS/libsoftokn3.dylib
00379000 /Applications/Firefox.app/Contents/MacOS/components/libbrowserdirprovider.dylib
0063c000 /Applications/Firefox.app/Contents/MacOS/components/libalerts_s.dylib
00693000 /Applications/Firefox.app/Contents/MacOS/components/libbrowsercomps.dylib
006fa000 /System/Library/CoreServices/Encodings/libSimplifiedChineseConverter.dylib
00b38000 /System/Library/TextEncodings/Unicode Encodings.bundle/Contents/MacOS/Unicode Encodings
00e8d000 /Applications/Firefox.app/Contents/MacOS/XUL
15145000 /System/Library/CoreServices/Encodings/libTraditionalChineseConverter.dylib
152a4000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libfontmanager.jnilib
154c9000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libdeploy.jnilib
154d8000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/liblaf.jnilib
15c66000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLRendererFloat.bundle/GLRendererFloat
1687d000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln4690762644789988447/libdecora-sse.jnilib
16df6000 /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine
16fa9000 /System/Library/Extensions/GeForce8xxxGLDriver.bundle/Contents/MacOS/GeForce8xxxGLDriver
177ce000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln8885381185793581241/libjogl.jnilib
17fa9000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libnet.jnilib
17fbb000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libnio.jnilib
18222000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln8885381185793581241/libKeyChainLibrary.jnilib
1845f000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln8885381185793581241/libdecora-sse.jnilib
1a0ab000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/ATSHI.dylib
1a2d4000 /Applications/Firefox.app/Contents/MacOS/libnssdbm3.dylib
1a880000 /Applications/Firefox.app/Contents/MacOS/libfreebl3.dylib
1a8f0000 /Applications/Firefox.app/Contents/MacOS/libnssckbi.dylib
1ab58000 /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera
1b5e0000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln6066953498965218818/libjogl.jnilib
1b8fe000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln2064063422567600152/libdecora-sse.jnilib
1bf2f000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln4690762644789988447/libjogl.jnilib
1c5e5000 /System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM
1c827000 /Library/Internet Plug-Ins/QuickTime Plugin.plugin/Contents/MacOS/QuickTime Plugin
1c88d000 /System/Library/Frameworks/JavaVM.framework/Versions/A/Frameworks/JavaNativeFoundation.framework/Versions/A/JavaNativeFoundation
1c8d8000 /Applications/Firefox.app/Contents/MacOS/plugins/MRJPlugin.plugin/Contents/MacOS/MRJPlugin
1c912000 /Applications/Firefox.app/Contents/MacOS/plugins/JavaEmbeddingPlugin.bundle/Contents/MacOS/JavaEmbeddingPlugin
1c955000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5/Libraries/libawt.jnilib
1cb8c000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libjava.jnilib
1cbb5000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libverify.dylib
1cbc2000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libclient.dylib
1cf84000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libzip.jnilib
2b78a000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5/Resources/JavaPluginCocoa.bundle/Contents/MacOS/JavaPluginCocoa
2bdfc000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libcmm.jnilib
2be09000 /System/Library/Frameworks/CoreAudioKit.framework/Versions/A/CoreAudioKit
2be8b000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libsuncmm.jnilib
2bf1c000 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries/libjpeg.jnilib
2c842000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln6066953498965218818/libdecora-sse.jnilib
2c992000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln632088687392941878/libjogl.jnilib
2ca74000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln632088687392941878/libdecora-sse.jnilib
2de45000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln2064063422567600152/libjogl.jnilib
2ee10000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln464050520297428450/libdecora-sse.jnilib
309e0000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln1245102932079094231/libdecora-sse.jnilib
30cc0000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln1245102932079094231/libjogl.jnilib
313f3000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln464050520297428450/libjogl.jnilib
33bd3000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln2674010676198759141/libdecora-sse.jnilib
33de0000 /private/var/folders/Sd/SdwfRQXzH5mb9luQVz41Wk+++TI/-Tmp-/jnlp-applet/jln5581544334128741232/jln2674010676198759141/libjogl.jnilib
36900000 /Library/Internet Plug-Ins/Flash Player.plugin/Contents/MacOS/Flash Player
ba900000 /System/Library/CoreServices/Encodings/libJapaneseConverter.dylib
bab00000 /System/Library/CoreServices/Encodings/libKoreanConverter.dylib
Thread id: 89178b8
User stack:
46 start + 41 (in firefox-bin) [0x2469]
46 start + 258 (in firefox-bin) [0x2542]
46 start + 2168 (in firefox-bin) [0x2cb8]
46 _XRE_main + 9880 (in XUL) [0xe95308]
46 __ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIP8nsRefPtrI13imgCacheEntryESt6vectorIS4_SaIS4_EEEEiS4_PFbRKS4_SB_EEvT_T0_SF_T1_T2_ + 6497543 (in XUL) [0x1683f77]
46 _JSD_GetValueForObject + 826154 (in XUL) [0x17e8d8a]
46 -[NSApplication run] + 795 (in AppKit) [0x949585fb]
46 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128 (in AppKit) [0x9495f5c0]
46 __DPSNextEvent + 657 (in AppKit) [0x9495fd0d]
46 _BlockUntilNextEventMatchingListInMode + 106 (in HIToolbox) [0x97071f19]
46 _ReceiveNextEventCommon + 374 (in HIToolbox) [0x970720a5]
46 _RunCurrentEventLoopInMode + 283 (in HIToolbox) [0x9707228c]
46 _CFRunLoopRunInMode + 88 (in CoreFoundation) [0x941a9c78]
46 _CFRunLoopRunSpecific + 844 (in CoreFoundation) [0x941a8c9c]
46 ___CFRunLoopDoObservers + 466 (in CoreFoundation) [0x941a7942]
46 __handleWindowNeedsDisplay + 436 (in AppKit) [0x94961e84]
46 -[NSWindow displayIfNeeded] + 189 (in AppKit) [0x94962061]
46 -[NSView displayIfNeeded] + 933 (in AppKit) [0x949624b3]
46 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 3090 (in AppKit) [0x94a21adf]
46 -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 306 (in AppKit) [0x94a24fbb]
46 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4433 (in AppKit) [0x94a264d3]
46 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4433 (in AppKit) [0x94a264d3]
46 _Java_sun_awt_image_GifImageDecoder_parseImage_redirect + 17756 (in JavaEmbeddingPlugin) [0x1c91ae46]
46 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 759 (in AppKit) [0x94a25679]
46 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1969 (in AppKit) [0x94a270ba]
46 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1050 (in AppKit) [0x94a26d23]
46 _Java_sun_awt_image_GifImageDecoder_parseImage_redirect + 47811 (in JavaEmbeddingPlugin) [0x1c9223ad]
46 -[NSView _drawRect:clip:] + 3853 (in AppKit) [0x94a2822c]
46 _PoseAsNSTextFieldFocusView + 451 (in JavaEmbeddingPlugin) [0x1c93bcce]
46 _PoseAsNSCarbonWindowFrame + 952 (in JavaEmbeddingPlugin) [0x1c936258]
46 -[NSViewAWT drawRect:] + 69 (in libawt.jnilib) [0x1c960aa1]
46 -[AWTDrawableContextManager drawRect:withDrawable:] + 349 (in libawt.jnilib) [0x1c960c04]
46 _JNFCallVoidMethod + 84 (in JavaNativeFoundation) [0x1c89005c]
46 _JNI_CreateJavaVM_Impl + 106843 (in libclient.dylib) [0x1cdd2deb]
46 ??? [0x1cc6536c]
46 ??? [0x1ccdb036]
46 ??? [0x1ccdb31a]
46 ??? [0x1f68b227]
46 ??? [0x1f68d9d3]
46 ??? [0x1f68d9d3]
46 ??? [0x1f6ffdc0]
46 ??? [0x1f9b2d4c]
46 ??? [0x1fa03444]
46 ??? [0x1f9b37bc]
46 ??? [0x1f94efbc]
46 ??? [0x1f879080]
46 ??? [0x1fa32a4c]
46 ??? [0x1f8ca434]
46 ??? [0x1f8ca4de]
46 ??? [0x1f701a72]
46 ??? [0x1ccf0373]
46 ??? [0x1cc77af4]
46 _mach_msg_trap + 10 (in libSystem.B.dylib) [0x903f3286]
| Assignee | ||
Updated•16 years ago
|
Assignee: nobody → smichaud
Component: General → Java Embedding Plugin
Product: Firefox → Core
QA Contact: general → java.jep
| Assignee | ||
Comment 1•16 years ago
|
||
In understand (from private email) that this problem is still
happening.
The steps to reproduce from comment #0 are quite vague. Have you been
able to find more specific ones?
I'd like to see another hang report. But you need to "attach" it (not
paste it into a comment). You need to include data on all threads.
And it needs to be made with the JEP downloaded from
http://javaplugin.sourceforge.net/ -- the JEP bundled with Mozilla
browsers has its debug symbols stripped.
I recommend installing the new JEP to your /Library/Internet Plug-Ins/
folder, then removing older copy(ies) of the JEP from your Mozilla
browser. For more information see the JEP Readme
(http://javaplugin.sourceforge.net/Readme.html).
another instance of hang: using 10.6.2 + JRE 1.6.0_15 + FF 3.5.5
| Assignee | ||
Comment 4•16 years ago
|
||
Bizarrely, neither of these logs appear to include anything from the firefox-bin process, or anything Java-related.
Just reproduced it again. The FF has 4 tabs and 3 of them running samples on javafx.com.
Although you are right, I don't see anything java in the report. But I triggered the hang by pressing refresh in one of the javafx pages.
Any hints on how to collect more useful debug info ?
| Assignee | ||
Comment 6•16 years ago
|
||
> Any hints on how to collect more useful debug info?
Tell me precisely, and in detail, what you did before one of your
hangs (one that can be reproduced at least 50% of the time).
Tell me exactly what was in each tab. Tell me exactly how you loaded
each tab, in which order. (If you opened a menu, tell me what it was
and how you did it (keyboard shortcut or mouse)). Make sure
everything in every tab is publicly accessible. Tell me exactly what
you did (after everything was loaded) to trigger the hang.
As for the logs, tell me exactly what you did to generate them.
I just find I can take sample before killing the hang process using process monitor.
Attached is the hang sample with java calls in it.
steps I used to reproduce hang:
start firefox
go to http://javafx.com/ in first tab, applets load
open second tab by mouse click on + sign next to first tab
second tab, navigate to http://cnn.com
open third tab by mouse click on + sign next to second tab
third tab, navigate to http://javafx.com/samples/Reversi/index.html
open forth tab by mouse click on + sign next to third tab
forth tab, http://javafx.com/samples/FullScreenSketch/index.html
this applet will pop up security dialog, accept the dialog to let the applet load
go back to each tab and press refresh, it should hang when one of the applet reloads.
If not, repeat the whole process and try again.
| Assignee | ||
Comment 9•16 years ago
|
||
I've finally had time to get back to this ... and I'm still not able
to reproduce what your report.
Thanks for your detailed steps-to-reproduce from comment #8. They're
everything I could have asked for ... except they don't trigger the
problem (at least not for me).
I tested on OS X 10.6.2, with all the latest updates, using Firefox
3.5.5. This was on a very plain-vanilla install of 10.6.2 (in fact
the result of a clean install I'd just done, with no additional
software besides XCode 3.2.1). I ran Firefox without any extensions,
and without changing any of its settings from the defaults.
Thanks also for your sample from comment #7. It appears to show the
hang taking place deep inside Apple's JVM. But I can't glean any more
information from it than that.
Clearly there are one or more additional factors involved here. Try
running Firefox with a clean profile (this should get rid of any
extensions or customizations to Firefox's settings). If this doesn't
stop the problem happening, consider doing a clean install of OS X
10.6.2 to a spare partition and testing on that.
| Assignee | ||
Comment 10•16 years ago
|
||
Somebody's sent me another site to test with (in private email) --
which is very busy and slow to load:
http://www.vancouver2010.com/olympic-medals/geo-view/
Even with this site (in Firefox 3.5.7) I'm not able to reproduce a
hang (though I see long delays). But I do get to a point where the
JavaFX applet stops displaying. Interestingly, the same thing (more
or less) happens in Safari. Once again I tested on a very
plain-vanilla installation of OS X 10.6.2.
Here's what I did:
1) Load http://www.vancouver2010.com/olympic-medals/geo-view/ into
four tabs in the same window.
2) Rapidly (and randomly) switch between tabs and reload them.
Both Firefox and Safari spew lots of Console errors while doing this.
Comment 11•16 years ago
|
||
I was able to repro this bug following Thomas' STR on comment 0. I am running Mac OS 10.5.8. User Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5
I had about 30 tabs open in two firefox windows. I went to the http://javafx.com/ site and reloaded about 10 times and then I got the pinwheel busy cursor. I couldn't do anything with Firefox: no scrolling, no tabs switching, no access to the chrome UI, and couldn't do anything on the the content frame. This lasted 10 minutes before I did force quit on Firefox.
In the Activity Monitor, Firefox had 82 threads running, 699MB real memory, and 2.4GB VSIZE.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Comment 12•16 years ago
|
||
same here on Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; vi; rv:1.9.1.7) Gecko/20091221 YFF35 Firefox/3.5.7 with the steps to reproduce from tim
| Assignee | ||
Comment 13•16 years ago
|
||
Tim and Tomcat:
Please try exactly the same thing in Safari.
I'll try your new STR in Firefox and report back.
| Assignee | ||
Comment 14•16 years ago
|
||
I just tried a harsher variant of Tim's new STR (40 tabs in each
window, reload http://javafx.com/ 30 times) in both FF 3.5.7 and
Safari (on OS X 10.6.2) -- no hangs (or other visible problems) in
either browser.
Then I tried again with
http://www.vancouver2010.com/olympic-medals/geo-view/.
This time Safari stopped being able to display the applet (as happened
with my STR from comment #10), but Firefox actually crashed. Breakpad
didn't come up, though.
I'm going to try again with opt builds of current 1.9.1-branch and
1.9.2-branch code, to see if I can get some crash stacks (from gdb).
| Assignee | ||
Comment 15•16 years ago
|
||
I've now reproduced the "crash" again in gdb, using my STR from
comment #14 (though I had to reload
http://www.vancouver2010.com/olympic-medals/geo-view/ more than 100
times). But it's not a conventional crash, and I don't see a
conventional crash stack. Instead what I see is this (in the
Console), just before FF dies:
2010-01-07 10:31:39.184 firefox-bin[160:a0f]
Mozilla has caught an Obj-C exception
[JavaNativeException: java.lang.OutOfMemoryError: Java heap space]
...
Program exited normally.
FF used to trigger a crash (a NULL-dereference) on all Objective-C
exceptions (as per bug 163260). But it hasn't done this since the
patch for bug 486574 landed (which changed to just logging the
Objective-C exceptions). So I don't know why FF suddenly dies -- but
I assume this behavior is somehow built in to Apple's JVM.
So I'm not sure there's anything we can do about it.
Still no hangs, by the way.
And note that (as best I can tell from Safari's Console output) Java
out-of-memory errors are also what stops Safari from being able to
display the applet at
http://www.vancouver2010.com/olympic-medals/geo-view/.
| Assignee | ||
Comment 16•16 years ago
|
||
Timr and Tomcat:
Do you see anything interesting in the Console or Java Console just
before your freezes? ("Java Console.log" is a file written by the
JEP. Its contents are rewritten with each new session (every time you
restart Firefox). To open it, in the Console app choose File : Open.)
How often do you see the freezes? (E.g. every time you try the STR?,
one time in 10?)
Are you sure you haven't left out steps in your descriptions?
| Assignee | ||
Comment 17•16 years ago
|
||
Timr and Tomcat:
Here's something you may not be aware of:
The first time you load a JavaFX applet, the JavaFX infrastructure
gets installed (by a Java signed applet). This can take a very long
time (a minute or more). Near the end of the process you see a splash
screen prompting you to allow JavaFX to be installed.
Needless to say, any freezes you see before JavaFX has been installed
don't count.
| Assignee | ||
Comment 18•16 years ago
|
||
> Needless to say, any freezes you see before JavaFX has been
> installed don't count.
There's a better way to put this:
Rapidly reloading the page (one containing a JavaFX applet) before
JavaFX has itself finished installing isn't a fair test of any
browser. And I haven't done this in any of my tests (of FF or
Safari).
| Reporter | ||
Comment 19•16 years ago
|
||
This is with MacOS 10.6.2, Firefox 3.5.7, Java 6u17, old plugin. Attached is the process sample when it hangs, and the Java stack trace when I send "kill - quit" to the hang firefox process.
This is with loading the vancouver winter olympics FX applet:
http://www.vancouver2010.com/olympic-medals/geo-view/
I can get it to hang pretty easily. Just try to load the above page and sometimes it hang right the way. Otherwise, reload the page a few times and it will hang too.
Can you please take a look and see what's causing the hang ? thanks!
| Reporter | ||
Comment 20•16 years ago
|
||
| Reporter | ||
Comment 21•16 years ago
|
||
| Assignee | ||
Comment 22•16 years ago
|
||
I've FINALLY managed to reproduce some hangs.
It may not be too difficult to reproduce them once, accidentally. But
it's definitely not easy to reproduce them consistently.
Here, for the first time, are detailed, full and accurate steps to
reproduce:
1) Load 50 tabs into each of two different Firefox windows (FF 3.5.7
or 3.6).
The easiest way I found to do this is, in each window:
a) Choose Bookmarks : Bookmarks Toolbar : Latest Headlines.
b) Scroll down to the bottom of the menu and choose "Open All in
Tabs".
2) Open another tab in one of the windows and visit
http://www.vancouver2010.com/olympic-medals/geo-view/.
Be sure to wait until the page (and its JavaFX applet) are fully
loaded. You may be prompted to allow an applet 'from
"dl.javafx.com"' to have access to your computer -- click on the
Allow button. You may be prompted to install JavaFX -- say yes.
3) Repeatedly reload the page. (You can either click the Reload
button or press command-r.)
The timing is *very* difficult to get right.
Reloading rapidly won't cause a hang. I've generally gotten best
results by waiting until just before the applet is going to be
reloaded, and clicking the Reload button another once or twice.
Until you get the hang of it, it's probably best just to wait
random lengths of time between clicking the Reload button (or
pressing command-r).
I've managed to reproduce hangs on the 1.9.1 and 1.9.2 branches (FF
3.5.X and FF 3.6) in gdb on OS X 10.6.2 and 10.5.8. I'll post logs in
my next several comments.
| Assignee | ||
Comment 23•16 years ago
|
||
| Assignee | ||
Comment 24•16 years ago
|
||
| Assignee | ||
Comment 25•16 years ago
|
||
| Assignee | ||
Comment 26•16 years ago
|
||
| Assignee | ||
Updated•16 years ago
|
Attachment #420631 -
Attachment description: Gdb trace of 1.9.2-branch (FF 3.5.X) hang on OS X 10.5.8 → Gdb trace of 1.9.2-branch (FF 3.6) hang on OS X 10.5.8
| Reporter | ||
Comment 27•16 years ago
|
||
There is Java level deadlock when hang happens ?
Found one Java-level deadlock:
2010-01-07 11:42:07.759 firefox-bin[5493:b503] =============================
2010-01-07 11:42:07.760 firefox-bin[5493:b503]
2010-01-07 11:42:07.760 firefox-bin[5493:b503] "AWT-EventQueue-13":
2010-01-07 11:42:07.760 firefox-bin[5493:b503] waiting to lock monitor 0x1e5a87b0
2010-01-07 11:42:07.761 firefox-bin[5493:b503] (object 0x26342bd0, a com.sun.embeddedswing.EmbeddedEventQueue)
2010-01-07 11:42:07.761 firefox-bin[5493:b503] ,
which is held by "AWT-EventQueue-12"
2010-01-07 11:42:07.762 firefox-bin[5493:b503]
2010-01-07 11:42:07.762 firefox-bin[5493:b503] "AWT-EventQueue-12":
2010-01-07 11:42:07.763 firefox-bin[5493:b503] waiting to lock monitor 0x1e5a9944
2010-01-07 11:42:07.763 firefox-bin[5493:b503] (object 0x262a1a28, a java.awt.EventQueue)
2010-01-07 11:42:07.763 firefox-bin[5493:b503] ,
which is held by "AWT-AppKit"
2010-01-07 11:42:07.764 firefox-bin[5493:b503]
2010-01-07 11:42:07.764 firefox-bin[5493:b503] "AWT-AppKit":
2010-01-07 11:42:07.765 firefox-bin[5493:b503] waiting to lock monitor 0x1e194cd4
2010-01-07 11:42:07.765 firefox-bin[5493:b503] (object 0x262a19f0, a jep.MySimpleEventQueue)
2010-01-07 11:42:07.766 firefox-bin[5493:b503] ,
which is held by "AWT-EventQueue-12"
2010-01-07 11:42:07.766 firefox-bin[5493:b503]
2010-01-07 11:42:07.766 firefox-bin[5493:b503]
2010-01-07 11:42:07.767 firefox-bin[5493:b503] Java stack information for the threads listed above:
2010-01-07 11:42:07.767 firefox-bin[5493:b503] ===================================================
2010-01-07 11:42:07.768 firefox-bin[5493:b503] "AWT-EventQueue-13":
2010-01-07 11:42:07.768 firefox-bin[5493:b503] at java.awt.EventQueue.getNextEvent(EventQueue.java:489)
2010-01-07 11:42:07.769 firefox-bin[5493:b503] - waiting to lock <0x26342bd0>
2010-01-07 11:42:07.769 firefox-bin[5493:b503] (a com.sun.embeddedswing.EmbeddedEventQueue)
2010-01-07 11:42:07.770 firefox-bin[5493:b503] at com.sun.embeddedswing.EmbeddedEventQueue.getNextEvent(Unknown Source)
2010-01-07 11:42:07.770 firefox-bin[5493:b503] at com.sun.embeddedswing.EmbeddedEventQueue.getNextEvent(Unknown Source)
2010-01-07 11:42:07.770 firefox-bin[5493:b503] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:263)
2010-01-07 11:42:07.771 firefox-bin[5493:b503] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
2010-01-07 11:42:07.771 firefox-bin[5493:b503] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
2010-01-07 11:42:07.772 firefox-bin[5493:b503] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
2010-01-07 11:42:07.772 firefox-bin[5493:b503] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
2010-01-07 11:42:07.773 firefox-bin[5493:b503] at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
2010-01-07 11:42:07.773 firefox-bin[5493:b503] "AWT-EventQueue-12":
2010-01-07 11:42:07.773 firefox-bin[5493:b503] at java.awt.EventQueue.postEventPrivate(EventQueue.java:213)
2010-01-07 11:42:07.774 firefox-bin[5493:b503] - waiting to lock <0x262a1a28>
2010-01-07 11:42:07.774 firefox-bin[5493:b503] (a java.awt.EventQueue)
2010-01-07 11:42:07.775 firefox-bin[5493:b503] at java.awt.EventQueue.postEvent(EventQueue.java:198)
2010-01-07 11:42:07.775 firefox-bin[5493:b503] at sun.awt.PostEventQueue.flush(SunToolkit.java:2095)
2010-01-07 11:42:07.776 firefox-bin[5493:b503] - locked <0x26c3e548>
2010-01-07 11:42:07.776 firefox-bin[5493:b503] (a sun.awt.PostEventQueue)
2010-01-07 11:42:07.777 firefox-bin[5493:b503] at sun.awt.SunToolkit.flushPendingEvents(SunToolkit.java:611)
2010-01-07 11:42:07.777 firefox-bin[5493:b503] at java.awt.EventQueue.getNextEvent(EventQueue.java:488)
2010-01-07 11:42:07.778 firefox-bin[5493:b503] at java.awt.EventQueue.push(EventQueue.java:738)
2010-01-07 11:42:07.778 firefox-bin[5493:b503] - locked <0x26342bd0>
2010-01-07 11:42:07.779 firefox-bin[5493:b503] (a com.sun.embeddedswing.EmbeddedEventQueue)
2010-01-07 11:42:07.779 firefox-bin[5493:b503] - locked <0x262a19f0>
2010-01-07 11:42:07.780 firefox-bin[5493:b503] (a jep.MySimpleEventQueue)
2010-01-07 11:42:07.780 firefox-bin[5493:b503] at jep.MySimpleEventQueue.push(Unknown Source)
2010-01-07 11:42:07.780 firefox-bin[5493:b503] - locked <0x262a19f0>
2010-01-07 11:42:07.781 firefox-bin[5493:b503] (a jep.MySimpleEventQueue)
2010-01-07 11:42:07.781 firefox-bin[5493:b503] at com.sun.embeddedswing.EmbeddedEventQueue.register(Unknown Source)
2010-01-07 11:42:07.782 firefox-bin[5493:b503] at com.sun.embeddedswing.SwingGlueLayer$1.run(Unknown Source)
2010-01-07 11:42:07.782 firefox-bin[5493:b503] at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
2010-01-07 11:42:07.783 firefox-bin[5493:b503] at java.awt.EventQueue.dispatchEvent(EventQueue.java:633)
2010-01-07 11:42:07.783 firefox-bin[5493:b503] at jep.MySimpleEventQueue.dispatchEvent(Unknown Source)
2010-01-07 11:42:07.784 firefox-bin[5493:b503] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
2010-01-07 11:42:07.784 firefox-bin[5493:b503] at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
2010-01-07 11:42:07.785 firefox-bin[5493:b503] at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
2010-01-07 11:42:07.785 firefox-bin[5493:b503] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
2010-01-07 11:42:07.786 firefox-bin[5493:b503] at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
2010-01-07 11:42:07.786 firefox-bin[5493:b503] at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
2010-01-07 11:42:07.786 firefox-bin[5493:b503] "AWT-AppKit":
2010-01-07 11:42:07.787 firefox-bin[5493:b503] at java.awt.EventQueue.wakeup(EventQueue.java:1045)
2010-01-07 11:42:07.787 firefox-bin[5493:b503] - waiting to lock <0x262a19f0>
2010-01-07 11:42:07.788 firefox-bin[5493:b503] (a jep.MySimpleEventQueue)
2010-01-07 11:42:07.788 firefox-bin[5493:b503] at java.awt.EventQueue.wakeup(EventQueue.java:1047)
2010-01-07 11:42:07.789 firefox-bin[5493:b503] - locked <0x262a1a28>
2010-01-07 11:42:07.789 firefox-bin[5493:b503] (a java.awt.EventQueue)
2010-01-07 11:42:07.790 firefox-bin[5493:b503] at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
2010-01-07 11:42:07.790 firefox-bin[5493:b503] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
2010-01-07 11:42:07.791 firefox-bin[5493:b503] at java.lang.reflect.Method.invoke(Method.java:597)
2010-01-07 11:42:07.791 firefox-bin[5493:b503] at sun.awt.SunToolkit.wakeupEventQueue(SunToolkit.java:350)
2010-01-07 11:42:07.792 firefox-bin[5493:b503] at sun.awt.PostEventQueue.postEvent(SunToolkit.java:2116)
2010-01-07 11:42:07.792 firefox-bin[5493:b503] at sun.awt.SunToolkit.postEvent(SunToolkit.java:585)
2010-01-07 11:42:07.792 firefox-bin[5493:b503] at apple.awt.CComponent.postEvent(CComponent.java:261)
2010-01-07 11:42:07.793 firefox-bin[5493:b503] at apple.awt.ComponentModel.handlePaint(ComponentModel.java:335)
2010-01-07 11:42:07.793 firefox-bin[5493:b503]
Found 1 deadlock.
Any ideas ?
| Assignee | ||
Comment 28•16 years ago
|
||
First off, it shouldn't be any surprise these hangs are caused by
thread contention. But I *was* surprised to find two completely
different kinds of thread contention on OS X 10.5.8 and 10.6.2.
The 10.5.8 thread contention is actually due to a known bug in the JEP
(bug 508315, https://sourceforge.net/support/tracker.php?aid=2832144).
Java_JEPCookieHandler_getCookie and
Java_apple_awt_ContainerModel__1endValidate are (presumably) both
waiting for something to happen on the main thread, while the main
thread is stuck waiting for the results of one or more of these calls.
I've alleviated this problem in my current (testing) version of the
JEP -- what will become JEP 0.9.7.3. But, though my patch does
resolve the two (easily reproducible) testcases mentioned at
https://sourceforge.net/support/tracker.php?aid=2832144 comment 10, it
doesn't make this bug's hangs on OS X 10.5.8 go completely away. As
best I can tell it does make them harder to reproduce ... but (as
they're so difficult to reproduce consistently) it's really hard to be
sure.
The 10.6.2 thread contention is harder to figure out, and appears to
be in Java code -- so it's easier to see in Thomas's log from comment
#20: "AWT-EventQueue-12" and "AWT-EventQueue-13" have object
<0x262a19f0> locked. But one or more of them is waiting on the main
thread ("AWT-AppKit"), and the main thread is waiting to lock
<0x262a19f0>.
The hang is entirely in Sun/Apple code, so I'd guess this is a Sun or
an Apple bug -- more likely an Apple bug, since it only happens on OS
X 10.6.2. I've been unable to get the hangs to happen in Safari --
I'm not sure why. If Safari ran Java in a separate process (as I
understand it does with other plugins on OS X 10.6.2), that would be
the explanation. But I can't identify that process from the list of
processes generated by 'ps ax'. Maybe the process is deliberately
excluded from the 'ps ax' list, or maybe it's not there to be found.
Comment 29•16 years ago
|
||
I did some testing on OpenSolaris and I was able to produce some type of "hang" not sure if it is similar to the one you are seeing.A user tried to access the app at http://www.vancouver2010.com using Firefox 3.5.5 on Open Solaris Build 129. User had to restart browser to get it to work. This is similar to reload issue. Eventually it works.
First Attempt -- spinning logo
Second attempt -- did not work
Third attempt worked and shift reload hung it up requiring browser to be restarted.
Killing the java process allows the browser to work and the app comes up. Thanks to ray maslinski for finding this data point.
java runtime goes to 90% of user cpu.
We repeated this several times and it with the same result.
This is a stack trace of the java process that causes the browser to hang. This could be a work around for savvy users so we don't kill their browser.
Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode):
"Attach Listener" daemon prio=3 tid=0x08121400 nid=0x3b waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
"thread applet-null-2" prio=3 tid=0x08121c00 nid=0x3a in Object.wait() [0xc472e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6020f38> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1651)
- locked <0xc6020f38> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:619)
"Applet 7 LiveConnect Worker Thread" prio=3 tid=0x084c0400 nid=0x37 in Object.wait() [0xce12d000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6022f28> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(LiveConnectSupport.java:1702)
- locked <0xc6022f28> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:619)
"AWT-EventQueue-4" prio=3 tid=0x089e9800 nid=0x33 in Object.wait() [0xc3ccb000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6bc6b70> (a com.sun.embeddedswing.EmbeddedEventQueue)
at java.lang.Object.wait(Object.java:485)
at java.awt.EventQueue.getNextEvent(EventQueue.java:479)
- locked <0xc6bc6b70> (a com.sun.embeddedswing.EmbeddedEventQueue)
at com.sun.embeddedswing.EmbeddedEventQueue.getNextEvent(Unknown Source)
at com.sun.embeddedswing.EmbeddedEventQueue.getNextEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:236)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
"pool-1-thread-1" daemon prio=3 tid=0x08702000 nid=0x31 waiting on condition [0xc3c29000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0xc6bc4860> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
at java.util.concurrent.DelayQueue.take(DelayQueue.java:160)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:583)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:576)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
"Long sleeping thread" daemon prio=3 tid=0x08700800 nid=0x30 waiting on condition [0xc3da5000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.sun.scenario.animation.MasterTimer$LongSleepingThread.run(Unknown Source)
"TimerQueue" daemon prio=3 tid=0x0857f800 nid=0x2a in Object.wait() [0xc5fad000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6aea1a0> (a javax.swing.TimerQueue)
at javax.swing.TimerQueue.run(TimerQueue.java:232)
- locked <0xc6aea1a0> (a javax.swing.TimerQueue)
at java.lang.Thread.run(Thread.java:619)
"ConsoleWriterThread" daemon prio=3 tid=0x0855dc00 nid=0x29 in Object.wait() [0xc3ef2000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc65211e0> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at com.sun.deploy.util.ConsoleTraceListener$ConsoleWriterThread.run(ConsoleTraceListener.java:72)
- locked <0xc65211e0> (a java.lang.Object)
"TimerQueue" daemon prio=3 tid=0x08562000 nid=0x28 in Object.wait() [0xc3f43000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6adfa78> (a javax.swing.TimerQueue)
at javax.swing.TimerQueue.run(TimerQueue.java:232)
- locked <0xc6adfa78> (a javax.swing.TimerQueue)
at java.lang.Thread.run(Thread.java:619)
"thread applet-com.sun.javafx.runtime.adapter.Applet-1" prio=3 tid=0x08323800 nid=0x23 in Object.wait() [0xc54ad000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6555ee8> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1651)
- locked <0xc6555ee8> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:619)
"AWT-EventQueue-3" prio=3 tid=0x08260c00 nid=0x20 in Object.wait() [0xc529b000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6521888> (a java.awt.EventQueue)
at java.lang.Object.wait(Object.java:485)
at java.awt.EventQueue.getNextEvent(EventQueue.java:479)
- locked <0xc6521888> (a java.awt.EventQueue)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:236)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
"AWT-EventQueue-0" prio=3 tid=0x08253c00 nid=0x1f in Object.wait() [0xc52ec000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6515f98> (a java.awt.EventQueue)
at java.lang.Object.wait(Object.java:485)
at java.awt.EventQueue.getNextEvent(EventQueue.java:479)
- locked <0xc6515f98> (a java.awt.EventQueue)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:236)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
"AWT-Shutdown" prio=3 tid=0x08251c00 nid=0x1e in Object.wait() [0xc533d000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc64e4f98> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
- locked <0xc64e4f98> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:619)
"AWT-XAWT" daemon prio=3 tid=0x08245800 nid=0x1c runnable [0xc538e000]
java.lang.Thread.State: RUNNABLE
at sun.awt.X11.XToolkit.waitForEvents(Native Method)
at sun.awt.X11.XToolkit.run(XToolkit.java:548)
at sun.awt.X11.XToolkit.run(XToolkit.java:523)
at java.lang.Thread.run(Thread.java:619)
"Applet 6 LiveConnect Worker Thread" prio=3 tid=0x08222c00 nid=0x1a in Object.wait() [0xce0dc000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc654bb80> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(LiveConnectSupport.java:1702)
- locked <0xc654bb80> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:619)
"Browser Side Object Cleanup Thread" prio=3 tid=0x08220800 nid=0x17 in Object.wait() [0xc54fe000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc654bc08> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0xc654bc08> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at sun.plugin2.main.client.LiveConnectSupport$BrowserSideObjectCleanupThread.run(LiveConnectSupport.java:226)
"Java2D Disposer" daemon prio=3 tid=0x08208800 nid=0x16 in Object.wait() [0xc557d000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc654bc90> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0xc654bc90> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at sun.java2d.Disposer.run(Disposer.java:125)
at java.lang.Thread.run(Thread.java:619)
"CacheCleanUpThread" daemon prio=3 tid=0x08206800 nid=0x15 in Object.wait() [0xc55ce000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc654bcb8> (a com.sun.deploy.cache.CleanupThread)
at java.lang.Object.wait(Object.java:485)
at com.sun.deploy.cache.CleanupThread.run(CleanupThread.java:220)
- locked <0xc654bcb8> (a com.sun.deploy.cache.CleanupThread)
"CacheMemoryCleanUpThread" daemon prio=3 tid=0x081dbc00 nid=0x14 in Object.wait() [0xc5d9e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6513530> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0xc6513530> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(MemoryCache.java:219)
"Java Plug-In Heartbeat Thread" prio=3 tid=0x081c8800 nid=0x10 waiting on condition [0xc5ffe000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at sun.plugin2.main.client.PluginMain$HeartbeatThread.run(PluginMain.java:1591)
"Java Plug-In Pipe Worker Thread (Client-Side)" daemon prio=3 tid=0x081b8400 nid=0xe runnable [0xce08b000]
java.lang.Thread.State: RUNNABLE
at com.sun.deploy.net.socket.UnixSocketImpl.unStreamSocketRead(Native Method)
at com.sun.deploy.net.socket.UnixDomainSocket.read(UnixDomainSocket.java:444)
at com.sun.deploy.net.socket.UnixDomainSocket.read(UnixDomainSocket.java:390)
at sun.plugin2.ipc.unix.DomainSocketNamedPipe.read(DomainSocketNamedPipe.java:113)
at sun.plugin2.message.transport.NamedPipeTransport$SerializerImpl.read(NamedPipeTransport.java:92)
at sun.plugin2.message.transport.NamedPipeTransport$SerializerImpl.readByte(NamedPipeTransport.java:121)
at sun.plugin2.message.AbstractSerializer.readInt(AbstractSerializer.java:162)
at sun.plugin2.message.transport.SerializingTransport.read(SerializingTransport.java:97)
at sun.plugin2.message.Pipe$WorkerThread.run(Pipe.java:181)
"traceMsgQueueThread" daemon prio=3 tid=0x081b0000 nid=0xb in Object.wait() [0xce17e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6516ac0> (a java.util.ArrayList)
at java.lang.Object.wait(Object.java:485)
at com.sun.deploy.util.Trace$TraceMsgQueueChecker.run(Trace.java:79)
- locked <0xc6516ac0> (a java.util.ArrayList)
at java.lang.Thread.run(Thread.java:619)
"Timer-0" prio=3 tid=0x081aac00 nid=0xa in Object.wait() [0xce26e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6513880> (a java.util.TaskQueue)
at java.lang.Object.wait(Object.java:485)
at java.util.TimerThread.mainLoop(Timer.java:483)
- locked <0xc6513880> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:462)
"Low Memory Detector" daemon prio=3 tid=0x08109c00 nid=0x8 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
"CompilerThread0" daemon prio=3 tid=0x08106000 nid=0x7 waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=3 tid=0x08104800 nid=0x6 runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=3 tid=0x080f3400 nid=0x5 in Object.wait() [0xd04c3000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc6513a30> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0xc6513a30> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=3 tid=0x080eec00 nid=0x4 in Object.wait() [0xd0514000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc65136f8> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0xc65136f8> (a java.lang.ref.Reference$Lock)
"main" prio=3 tid=0x08070000 nid=0x2 in Object.wait() [0xd0a7e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0xc64eac70> (a sun.plugin2.message.Queue)
at sun.plugin2.message.Queue.waitForMessage(Queue.java:61)
- locked <0xc64eac70> (a sun.plugin2.message.Queue)
at sun.plugin2.message.Pipe.receive(Pipe.java:94)
at sun.plugin2.main.client.PluginMain.mainLoop(PluginMain.java:426)
at sun.plugin2.main.client.PluginMain.run(PluginMain.java:313)
at sun.plugin2.main.client.PluginMain.main(PluginMain.java:1876)
"VM Thread" prio=3 tid=0x080ea800 nid=0x3 runnable
"VM Periodic Task Thread" prio=3 tid=0x0810b400 nid=0x9 waiting on condition
JNI global references: 1359
| Assignee | ||
Comment 30•16 years ago
|
||
(In reply to comment #29)
You're testing with a very different beast -- Java Plugin2 (which runs
out of process), as opposed to the "old" Java plugin, which (except
maybe in Safari) runs in process.
And please, next time "attach" your log, rather than pasting it into a
comment -- that makes the bug harder to read. Same goes for you,
Thomas.
I don't see contention between any of the threads in your log. But
your STR sounds a lot like mine. And it's telling that killing the
Java process got around the problem.
| Assignee | ||
Comment 31•16 years ago
|
||
Here's the Java stack corresponding to the gdb stack in comment #24
(the 1.9.2-branch hang on OS X 10.5.8). It shows the Java equivalents
of Java_JEPCookieHandler_getCookie and
Java_apple_awt_ContainerModel__1endValidate.
| Assignee | ||
Updated•16 years ago
|
Attachment #420646 -
Attachment description: Java trace of 1.9.2-branch (FF 3.5.X) hang on OS X 10.5.8 → Java trace of 1.9.2-branch (FF 3.6) hang on OS X 10.5.8
| Reporter | ||
Comment 32•16 years ago
|
||
Isn't the deadlock between Mozilla Java Embedding Plugin's "jep.MySimpleEventQueue" and the JavaFX com.sun.embeddedswing.EmbeddedEventQueue ?
That's why Safari do not show this hang.
| Assignee | ||
Comment 33•16 years ago
|
||
> Isn't the deadlock between Mozilla Java Embedding Plugin's
> "jep.MySimpleEventQueue" and the JavaFX
> com.sun.embeddedswing.EmbeddedEventQueue?
No.
The following snippet (from "AWT-EventQueue-12" or
"AWT-EventQueue-13") doesn't show a deadlock. It just shows that each
of these threads has "locked" the <0x262a19f0> object (a
jep.MySimpleEventQueue object). The code that did the locking is a
call to java.awt.EventQueue.push() (super.push() in the
jep.MySimpleEventQueue.push() method). The "AWT-AppKit" thread is
blocked (in the java.awt.EventQueue.wakeup() method) waiting for
access to the <0x262a19f0> object.
(a com.sun.embeddedswing.EmbeddedEventQueue)
- locked <0x262a19f0>
(a jep.MySimpleEventQueue)
at jep.MySimpleEventQueue.push(Unknown Source)
- locked <0x262a19f0>
Comment 34•16 years ago
|
||
Comment 35•16 years ago
|
||
With Mac OS X 10.5.8, FF 3.5.5, JRE 1.5.0_22, the deadlock involves only 2 threads:
"AWT-EventQueue-9":
at java.awt.EventQueue.postEventPrivate(EventQueue.java:190)
- waiting to lock <0x22a44518> (a java.awt.EventQueue)
which is locked by "AWT-AppKit"
"AWT-AppKit":
at java.awt.EventQueue.wakeup(EventQueue.java:865)
- waiting to lock <0x22a41270> (a jep.MySimpleEventQueue)
which is locked by "AWT-EventQueue-9"
| Assignee | ||
Comment 36•16 years ago
|
||
(In reply to comment #34 and comment #35)
Interesting. Your hang on OS X 10.5.8 is quite different from the
hangs I saw (and reported in comment #23, comment #24 and comment #31
above).
How, precisely, did you trigger the hang?
And I do mean *precisely* :-)
Comment 37•16 years ago
|
||
(In reply to comment #36)
I don't think I can precisely describe the steps to reproduce the hang.
Just now, I saw the same hang again by:
- start FF browser from command line
/Applications/Firefox.app/Contents/MacOS/firefox-bin
- visit the http://www.vancouver2010.com/olympic-medals
- click on the "Geo View" tab in the web page
Previous time (if I remember correctly)
- same as above steps
- plus refresh the applet couple of times
- plus create a new browser tab without any applet
| Assignee | ||
Comment 38•16 years ago
|
||
OK, thanks.
I'm getting used to the fact that these crashes are pretty random. And I'll bet you have different extensions and plugins installed than I do.
But one thing seems to be in common to all our hang logs -- apple.awt.ComponentModel.handlePaint seems to always be on the main thread's stack. I'm going to play with that (in JEP code), and see what I can make of it.
| Assignee | ||
Comment 39•16 years ago
|
||
these crashes -> these hangs
| Assignee | ||
Comment 40•16 years ago
|
||
> http://www.vancouver2010.com/olympic-medals
The JavaFX applet on this page seems to have disappeared. It's the only one with which I've ever been able to reproduce this bug's hangs.
Help!!!
Comment 41•16 years ago
|
||
Try http://www.vancouver2010.com/olympic-medals/geo-view/
It should be the same applet i believe.
| Assignee | ||
Comment 42•16 years ago
|
||
(In reply to comment #41)
OK, thanks.
This is the same URL I cited in comment #10 and following. I was
thrown by the wrong URL from comment #37 :-(
Sigh.
| Reporter | ||
Comment 43•16 years ago
|
||
Is the jep.MySimpleEventQueue of Firefox specific on MacOS only ? (I think so because on windows it uses Sun's plugin, correct ?)
We would like to understand the purpose of the jep.MySimpleEventQueue, and see how can we workaround this problem from the FX side. (com.sun.embeddedswing.EmbeddedEventQueue)
| Assignee | ||
Comment 44•16 years ago
|
||
> Is the jep.MySimpleEventQueue of Firefox specific on MacOS only?
jep.MySimpleEventQueue is specific to the Java Embedding Plugin. The
source code for the JEP is available at
http://javaplugin.sourceforge.net/ (source and binaries are available
in a single distro). Feel free to play around with it. Let me know
if you come up with a way to work around these hangs. I will consider
adding the change to my next release of the JEP.
Be aware that you'll need an OS X 10.5.8 system to build/rebuild the
JEP. It doesn't yet build on OS X 10.6.
Last weekend I played around with my idea from comment #38, but
haven't yet got anywhere with it. I'll try again next weekend.
(I'm currently only able to work on the JEP in my spare time.)
| Assignee | ||
Comment 45•16 years ago
|
||
http://people.mozilla.com/~stmichaud/JEP/JEP-0.9.7.3pre-2010-01-18.zip
Here's a copy of my current (not yet released) version of the JEP,
with the MySimpleEventQueue class disabled. The zipfile includes
binaries of JavaEmbeddingPlugin.bundle and MRJPlugin.plugin, plus diff
files showing the changes since JEP 0.9.7.2.
You need to install both JavaEmbeddingPlugin.bundle and
MRJPlugin.plugin together. I recommend copying them to your
/Library/Internet Plug-Ins/ folder, then removing older copy(ies) of
the JEP from your Mozilla.org browser(s). For more information see
the JEP Readme (http://javaplugin.sourceforge.net/Readme.html).
With this JEP "nightly" I no longer hang on OS X 10.6.2 -- but since
I've always found these hangs very difficult to reproduce, I'm not
sure how significant this is. I do still hang on OS X 10.5.8 -- but I
see different hangs (several different ones).
Thomas and other Sun people, please test with this JEP "nightly", and
let us know your results.
The more I work on this, the more I'm convinced these hangs are
actually caused by one or more bugs in JavaFX itself. This would
explain the results Rinaldo got in comment #29.
I've tried my STR from comment #22 on several other very busy and
slow-loading pages containing Java applets (sometimes quite a few of
them). I'm not able to reproduce hangs on any of them, on OS X 10.6.2
or 10.5.8:
http://brittnysseafood.com/
http://www.sferyx.com/htmleditorapplet/demo/htmleditordemo.php
http://www.weather.gov/radar_tab.php (click on map and choose "loop")
If this bug's hangs were caused by problems in the JEP, you think I'd
be able to reproduce hangs with these sites.
| Assignee | ||
Comment 46•16 years ago
|
||
Is the JavaFX source code available somewhere?
If so, please post a URL.
If not, please let us know why not.
Comment 47•16 years ago
|
||
JavaFX is not open source project and source code is not publicly available.
However, problem can likely be reproduced with any app that does install own event queue
(there are not many apps that do that though). Most of the applets do not do this unless they use some advanced framework, so testing pages with lots of or slow Java applets will not trigger this bug.
The problem is triggered by presence of JEP. It is not in JEP per se, it is actually in JRE.
On other hand there are too many versions of JREs that are vulnerable to this and workaround in JEP
is needed.
The problem itself is triggered by JEP's event queue.
Normally, when additional event queue is installed events are first delivered to the "root" event queue
(AWTEventQueue) and then passed through the chain of additional event queues installed.
As part of this process each of queue object is locked.
I.e. the sequence of locks is
AWTEventQueue -> jep.MySimpleEventQueue
When app tries to install own event queue (like JavaFX does) push operation behaves differently.
First, it grabs lock on the last event queue in the chain and adds new queue as the child. Then it
peeks all the pending events from the former "end" event queue and resubmits them.
Resubmit will behave as it is described in previous paragraph. I.e. effectively lock order will be
jep.MySimpleEventQueue -> AWTEventQueue
This causes deadlocks people are observing.
Real fix would be to fix this in the AWT (JRE) and this is done as part of OpenJDL and JDK7. However, until JDK7 is released and gain popularity people will suffer from this problem.
So, if it is possible to eliminate JEP's event queue then it sounds like a good workaround.
There are other problems with FF/Mac and JavaFX but these probably should be considered as part of other bugs (like setting cookie from Java may hang FF, crashes from time to time).
Comment #29 is likely to be about other problem. Are JEP and SimpleEventQueue used by FF on OpenSolaris (or any other platform besides Mac)?
| Assignee | ||
Comment 48•16 years ago
|
||
> When app tries to install own event queue (like JavaFX does) push
> operation behaves differently. First, it grabs lock on the last
> event queue in the chain and adds new queue as the child. Then it
> peeks all the pending events from the former "end" event queue and
> resubmits them. Resubmit will behave as it is described in previous
> paragraph. I.e. effectively lock order will be
> jep.MySimpleEventQueue -> AWTEventQueue
Actually, I suspect it's the delay in handling events (while keeping
event queues locked), as much as anything else, that triggers the
hangs. So the more event queues get installed, the more likely you'll
see hangs.
> Real fix would be to fix this in the AWT (JRE) and this is done as
> part of OpenJDL and JDK7.
I'm looking forward to this becoming more widely available ... and
(dare we hope?) available on OS X.
> So, if it is possible to eliminate JEP's event queue then it sounds
> like a good workaround.
As it happens, the MySimpleEventQueue class is no longer really
needed, so I'll plan to eliminate it in the next release (0.9.7.3) of
the JEP.
I doubt this will completely eliminate the hangs -- JavaFX will still
be installing its own event queues. But there's reason to hope
they'll occur less frequently (with JavaFX applets), at least on OS X
10.6.X.
| Assignee | ||
Comment 49•16 years ago
|
||
I'm disappointed the source code for JavaFX isn't available.
Sun blazed a trail by opening Java -- a large, commercial development
environment that had previously been largely closed. Even under the
restrictive licenses that were used prior to the OpenJDK (those that
didn't allow you to change or fork the code), having the source code
to refer to has been an enormously valuable resource.
JavaFX clearly isn't just another signed Java applet -- it's in effect
an extension of the Java development environment. So if it succeeds
like Sun wants it to, Java will no longer be truly open.
I hope Sun eventually changes its mind and open-sources JavaFX -- or
at least makes its source code fully available under a restrictive
license like that used for the Java 1.4, 5.0 and 6.0 source code.
Comment 50•16 years ago
|
||
>> When app tries to install own event queue (like JavaFX does) push
>> operation behaves differently. First, it grabs lock on the last
>> event queue in the chain and adds new queue as the child. Then it
>> peeks all the pending events from the former "end" event queue and
>> resubmits them. Resubmit will behave as it is described in previous
>> paragraph. I.e. effectively lock order will be
>> jep.MySimpleEventQueue -> AWTEventQueue
>
> Actually, I suspect it's the delay in handling events (while keeping
> event queues locked), as much as anything else, that triggers the
> hangs. So the more event queues get installed, the more likely you'll
> see hangs.
It is not about number of event queues. When events are processed they
are passed along the list of event queues and locks are taken in the same order.
So, there could be no deadlock.
This problem happens only when new queue is being added as push operation attempt grabs lock in the different order.
Timings are only relevant because there could be no pending events and in this case push may finish without deadlock.
> I doubt this will completely eliminate the hangs -- JavaFX will still
> be installing its own event queues. But there's reason to hope
> they'll occur less frequently (with JavaFX applets), at least on OS X
> 10.6.X.
There should be no problem if there will be only one additional event queue (installed by JavaFX or other extension).
Chain will consist of one element before new queue is pushed and order of locks is not important.
2 or more additional event queues will cause the problem.
| Assignee | ||
Comment 51•16 years ago
|
||
(In reply to comment #50)
Sounds plausible ... at least for the hangs Thomas and I saw on OS X
10.6.
We'll see how it all plays out.
| Reporter | ||
Comment 52•16 years ago
|
||
Tested JEP bundle from Steven: http://people.mozilla.com/~stmichaud/JEP/JEP-0.9.7.3pre-2010-01-18.zip
Works great for me so far. I cannot reproduce any Firefox hang when loading JavaFX applets.
| Assignee | ||
Comment 53•15 years ago
|
||
I've just released a new version of the Java Embedding Plugin
(0.9.7.3) that fixes this bug (by working around it). For more
information see bug 551327.
| Assignee | ||
Comment 54•15 years ago
|
||
JEP 0.9.7.3 has now landed on the 1.9.2 and 1.9.1 branches, and should
be in tomorrow's Firefox 3.6.3pre and 3.1.10pre nightlies (at
ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/).
Please test with them and let us know your results.
| Assignee | ||
Updated•15 years ago
|
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Comment 55•15 years ago
|
||
Can someone give an exact location and filename for the Firefox with this fix?
The firefox-3.6.3pre.en-US.mac-shark.dmg from the latest-mozilla-1.9.2 folder couldn't be launched.
| Assignee | ||
Comment 56•15 years ago
|
||
Current nightlies should always be available at the following URLs:
ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-1.9.2/firefox-3.6.3pre.en-US.mac.dmg
ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-1.9.1/firefox-3.5.10pre.en-US.mac.dmg
Comment 57•15 years ago
|
||
ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-1.9.2/firefox-3.6.3pre.en-US.mac.dmg
I've tried the above build but unfortunately I could still reproduce the hang.
Steven,
The above build was dated yesterday 4:24AM.
Are you sure that build contains your fix?
Comment #54 was entered yesterday around 3:53PM PT which was after the build.
| Assignee | ||
Comment 58•15 years ago
|
||
Sigh. I guess you'll have to wait til tomorrow to test a FF 3.6.X/1.9.2-branch build.
But the latest FF 3.5.X/1.9.1-branch nightly should bundle JEP 0.9.7.3.
Comment 59•15 years ago
|
||
My FF 3.6.3pre on Mac OS X 10.5.8 was auto updated today to the version dated 3/26/2010.
I couldn't reproduce the hang so far.
So it looks like the fix is working.
Component: Java Embedding Plugin → Java (Java Embedding Plugin)
Product: Core → Plugins
Updated•9 years ago
|
Product: Plugins → Plugins Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•