-
Bug
-
Resolution: Fixed
-
P1
-
1.1.1
-
b01
-
x86
-
windows_nt
-
Not verified
Oracle's WebForms applications is hanging on JDK1.1.1 but not JDK1.1
The problem occurs on Win95 and WinNT using the latest build (3/12) of
the JDK. Oracle has set up a test machine in my office to demonstrate, since
the application is quite large and complex.
To reproduce:
run appletviewer /home/richie/orcl/x.html
click on "All Widgets"
(wait for the new window to appear)
click "Exit" in the Main window.
The application will appear to hang.
After looking at the problem further and with the help of Jonathan, it
appears that setDefaultFocus() is actually going into an endless loop.
This is only caused if List.removeNotify() calls getSelectedIndexes(), which is
happening in another thread (AWT-EventQueue).
I added some debugging output to some of the code in question and it shows
setDefaultFocus() appearing to get into an endless loop. What is strange to me
is this ONLY occurs if List.removeNotify() calls getSelectedIndexes from another
thread(probably really further down at the native method isSelected in awt_List.cpp).
One question is why does removeNotify() needs to know which items are
selected if it is in the process of removing that component?
The stack trace shows the following at the time of the hang/loop.
Full thread dump:
"AWT-Finalizer" (TID:0xf75b30, sys_thread_t:0x888eb0, Win32ID:0x98, state:S)
java.lang.Object.wait(Object.java:315)
sun.awt.AWTFinalizer.run(AWTFinalizer.java:48)
"Screen Updater" (TID:0xf5f540, sys_thread_t:0x85c8b0, Win32ID:0x7c, state:S
java.lang.Object.wait(Object.java:315)
sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:78)
sun.awt.ScreenUpdater.run(ScreenUpdater.java:98)
"AWT-Windows" (TID:0xf5daf0, sys_thread_t:0x86ad10, Win32ID:0x8f, state:R) p
sun.awt.windows.WWindowPeer.setDefaultFocus(WWindowPeer.java:120)
sun.awt.windows.WToolkit.run(WToolkit.java:103)
java.lang.Thread.run(Thread.java:474)
"AWT-EventQueue-0" (TID:0xf5da28, sys_thread_t:0x869e70, Win32ID:0x5c, state
sun.awt.windows.WListPeer.getSelectedIndexes(WListPeer.java:52)
java.awt.List.removeNotify(List.java:116)
java.awt.Container.remove(Container.java:314)
java.awt.Container.remove(Container.java:351)
oracle.forms.uiClient.v1_4.ui.UICommon.onDestroy(UICommon.java:1360)
oracle.forms.uiClient.v1_4.ui.TListItem.onDestroy(TListItem.java:246)
oracle.forms.uiClient.v1_4.engine.Runform.onDestroyHandler(Runform.java:
oracle.forms.uiClient.v1_4.engine.Runform.processSet(Runform.java:1624)
oracle.forms.uiClient.v1_4.engine.Runform.onMessage(Runform.java:1494)
oracle.forms.uiClient.v1_4.ui.CheckboxItem.itemStateChanged(CheckboxItem
java.awt.Checkbox.processItemEvent(Checkbox.java:288)
java.awt.Checkbox.processEvent(Checkbox.java:269)
java.awt.Component.dispatchEventImpl(Component.java:1442)
java.awt.Component.dispatchEvent(Component.java:1382)
java.awt.EventDispatchThread.run(EventDispatchThread.java:63)
"thread applet-oracle.forms.uiClient.v1_4.engine.Runform" (TID:0xf5cc60, sys
0x868ef0, Win32ID:0xa5, state:S) prio=4
java.lang.Object.wait(Object.java:315)
sun.applet.AppletPanel.getNextEvent(AppletPanel.java:204)
sun.applet.AppletPanel.run(AppletPanel.java:230)
java.lang.Thread.run(Thread.java:474)
"Finalizer thread" (TID:0xf500d0, sys_thread_t:0x852bf0, Win32ID:0x9a, state
2
"main" (TID:0xf500a8, sys_thread_t:0x85c720, Win32ID:0xa1, state:S) prio=5
Monitor Cache Dump:
sun.awt.AWTFinalizer@F75B30/1012AA0: <unowned>
Waiters: 1
sun.applet.AppletViewerPanel@F5C928/FB6B20: <unowned>
Waiters: 1
java.lang.Object@F53AE0/F9CD58: owner "AWT-EventQueue-0" (0x869e70, 2 entrie
java.awt.List@F6A4E0/1012180: owner "AWT-EventQueue-0" (0x869e70, 1 entry)
sun.awt.ScreenUpdater@F5F540/FBFCE8: <unowned>
Waiters: 1
oracle.forms.uiClient.v1_4.ui.DrawnPanel@F6C8F8/FC0C30: owner "AWT-Windows"
1 entry)
oracle.forms.uiClient.v1_4.ui.TListItem@F6A580/1012008: owner "AWT-EventQueu
9e70, 2 entries)
java.lang.Boolean@F60118/FC1D80: owner "AWT-EventQueue-0" (0x869e70, 1 entry
Registered Monitor Dump:
Thread queue lock: <unowned>
Waiters: 1
Name and type hash table lock: <unowned>
String intern lock: <unowned>
JNI pinning lock: <unowned>
JNI global reference lock: <unowned>
BinClass lock: <unowned>
Class loading lock: <unowned>
Java stack lock: <unowned>
Code rewrite lock: <unowned>
Heap lock: <unowned>
Has finalization queue lock: <unowned>
Finalize me queue lock: <unowned>
Waiters: 1
Monitor cache expansion lock: <unowned>
Monitor registry: <unowned>
This is what happens after the exit button is clicked in our code, using the debugging statements
I placed in the build:
Thread[AWT-Windows,5,main]: setDefaultFocus(): start
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): START
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): after getComponentCount: 2
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 0
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): START
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): after getComponentCount: 1
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 0
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): START
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): after getComponentCount: 1
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 0
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): START
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): after getComponentCount: 9
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 0
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 1
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 2
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 3
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 4
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 5
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 6
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 7
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 8
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container: return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container: return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container: return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 1
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): START
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): after getComponentCount: 0
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container: return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
Thread[AWT-EventQueue-0,5,main]: removeNotify(): start
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
Thread[AWT-EventQueue-0,5,main]: GETSELECTEDINDEXES: start
Thread[AWT-EventQueue-0,5,main]: GETSELECTEDINDEXES: len: 5
Thread[AWT-EventQueue-0,5,main]: GETSELECTEDINDEXES: loop start0
IsItemSelected 0 start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
[this repeats]
Notice removeNotify() never ends and gets hung up in the native method call to isItemSelected().
The problem occurs on Win95 and WinNT using the latest build (3/12) of
the JDK. Oracle has set up a test machine in my office to demonstrate, since
the application is quite large and complex.
To reproduce:
run appletviewer /home/richie/orcl/x.html
click on "All Widgets"
(wait for the new window to appear)
click "Exit" in the Main window.
The application will appear to hang.
After looking at the problem further and with the help of Jonathan, it
appears that setDefaultFocus() is actually going into an endless loop.
This is only caused if List.removeNotify() calls getSelectedIndexes(), which is
happening in another thread (AWT-EventQueue).
I added some debugging output to some of the code in question and it shows
setDefaultFocus() appearing to get into an endless loop. What is strange to me
is this ONLY occurs if List.removeNotify() calls getSelectedIndexes from another
thread(probably really further down at the native method isSelected in awt_List.cpp).
One question is why does removeNotify() needs to know which items are
selected if it is in the process of removing that component?
The stack trace shows the following at the time of the hang/loop.
Full thread dump:
"AWT-Finalizer" (TID:0xf75b30, sys_thread_t:0x888eb0, Win32ID:0x98, state:S)
java.lang.Object.wait(Object.java:315)
sun.awt.AWTFinalizer.run(AWTFinalizer.java:48)
"Screen Updater" (TID:0xf5f540, sys_thread_t:0x85c8b0, Win32ID:0x7c, state:S
java.lang.Object.wait(Object.java:315)
sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:78)
sun.awt.ScreenUpdater.run(ScreenUpdater.java:98)
"AWT-Windows" (TID:0xf5daf0, sys_thread_t:0x86ad10, Win32ID:0x8f, state:R) p
sun.awt.windows.WWindowPeer.setDefaultFocus(WWindowPeer.java:120)
sun.awt.windows.WToolkit.run(WToolkit.java:103)
java.lang.Thread.run(Thread.java:474)
"AWT-EventQueue-0" (TID:0xf5da28, sys_thread_t:0x869e70, Win32ID:0x5c, state
sun.awt.windows.WListPeer.getSelectedIndexes(WListPeer.java:52)
java.awt.List.removeNotify(List.java:116)
java.awt.Container.remove(Container.java:314)
java.awt.Container.remove(Container.java:351)
oracle.forms.uiClient.v1_4.ui.UICommon.onDestroy(UICommon.java:1360)
oracle.forms.uiClient.v1_4.ui.TListItem.onDestroy(TListItem.java:246)
oracle.forms.uiClient.v1_4.engine.Runform.onDestroyHandler(Runform.java:
oracle.forms.uiClient.v1_4.engine.Runform.processSet(Runform.java:1624)
oracle.forms.uiClient.v1_4.engine.Runform.onMessage(Runform.java:1494)
oracle.forms.uiClient.v1_4.ui.CheckboxItem.itemStateChanged(CheckboxItem
java.awt.Checkbox.processItemEvent(Checkbox.java:288)
java.awt.Checkbox.processEvent(Checkbox.java:269)
java.awt.Component.dispatchEventImpl(Component.java:1442)
java.awt.Component.dispatchEvent(Component.java:1382)
java.awt.EventDispatchThread.run(EventDispatchThread.java:63)
"thread applet-oracle.forms.uiClient.v1_4.engine.Runform" (TID:0xf5cc60, sys
0x868ef0, Win32ID:0xa5, state:S) prio=4
java.lang.Object.wait(Object.java:315)
sun.applet.AppletPanel.getNextEvent(AppletPanel.java:204)
sun.applet.AppletPanel.run(AppletPanel.java:230)
java.lang.Thread.run(Thread.java:474)
"Finalizer thread" (TID:0xf500d0, sys_thread_t:0x852bf0, Win32ID:0x9a, state
2
"main" (TID:0xf500a8, sys_thread_t:0x85c720, Win32ID:0xa1, state:S) prio=5
Monitor Cache Dump:
sun.awt.AWTFinalizer@F75B30/1012AA0: <unowned>
Waiters: 1
sun.applet.AppletViewerPanel@F5C928/FB6B20: <unowned>
Waiters: 1
java.lang.Object@F53AE0/F9CD58: owner "AWT-EventQueue-0" (0x869e70, 2 entrie
java.awt.List@F6A4E0/1012180: owner "AWT-EventQueue-0" (0x869e70, 1 entry)
sun.awt.ScreenUpdater@F5F540/FBFCE8: <unowned>
Waiters: 1
oracle.forms.uiClient.v1_4.ui.DrawnPanel@F6C8F8/FC0C30: owner "AWT-Windows"
1 entry)
oracle.forms.uiClient.v1_4.ui.TListItem@F6A580/1012008: owner "AWT-EventQueu
9e70, 2 entries)
java.lang.Boolean@F60118/FC1D80: owner "AWT-EventQueue-0" (0x869e70, 1 entry
Registered Monitor Dump:
Thread queue lock: <unowned>
Waiters: 1
Name and type hash table lock: <unowned>
String intern lock: <unowned>
JNI pinning lock: <unowned>
JNI global reference lock: <unowned>
BinClass lock: <unowned>
Class loading lock: <unowned>
Java stack lock: <unowned>
Code rewrite lock: <unowned>
Heap lock: <unowned>
Has finalization queue lock: <unowned>
Finalize me queue lock: <unowned>
Waiters: 1
Monitor cache expansion lock: <unowned>
Monitor registry: <unowned>
This is what happens after the exit button is clicked in our code, using the debugging statements
I placed in the build:
Thread[AWT-Windows,5,main]: setDefaultFocus(): start
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): START
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): after getComponentCount: 2
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 0
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): START
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): after getComponentCount: 1
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 0
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): START
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): after getComponentCount: 1
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 0
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): START
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): after getComponentCount: 9
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 0
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 1
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 2
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 3
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 4
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 5
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 6
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 7
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 8
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container: return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container: return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container: return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): getContainerElement + 1
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): START
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): after getComponentCount: 0
Thread[AWT-Windows,5,main]: setDefaultFocus(CONT): instance of Container: return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
Thread[AWT-EventQueue-0,5,main]: removeNotify(): start
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
Thread[AWT-EventQueue-0,5,main]: GETSELECTEDINDEXES: start
Thread[AWT-EventQueue-0,5,main]: GETSELECTEDINDEXES: len: 5
Thread[AWT-EventQueue-0,5,main]: GETSELECTEDINDEXES: loop start0
IsItemSelected 0 start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
WWindowPeer_getContainerElement: Start
WWindowPeer_getContainerElement: in monitor
WWindowPeer_getContainerElement: Return
[this repeats]
Notice removeNotify() never ends and gets hung up in the native method call to isItemSelected().