JDK-6809570 : Certificate prompt totally lock up when a webstart apps connect via SSL
  • Type: Bug
  • Component: deploy
  • Sub-Component: deployment_toolkit
  • Affected Version: 6u12
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2009-02-24
  • Updated: 2013-06-13
  • Resolved: 2013-06-13
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8
8Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Description
J2SE Version (please include all output from java -version flag):

java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)

Does this problem occur on J2SE 1.4.x or 5.0.x ?  Yes / No (pick one)
No, works fine with JDK 6

Operating System Configuration Information (be specific):
Windows Vista Business SP1

Hardware Configuration Information (be specific):
HP Pavillion dv9000
Windows Vista Business SP1 32 bit
3 GB RAM
Intel Core 2 Duo T9300



Bug Description:
Complete show stopper.  My application starts and tries to create an SSL connection.  The certificate is self signed.  It gets to the point where a dialog comes up so I can accept the self-signed certificate and I cannot select anything on that dialog.  The application is completly locked up.  I can even scroll around in the Java console.  My only option is to end the process from the TaskManager.  



Steps to Reproduce (be specific):

Here is some information I took from jconsole.  The Javaws Secure Thread is in an Invoke and Wait

Note the total blocked and total wait counts


-------- JConsole Thread Dumps ------------

Name: Reference Handler
State: WAITING on java.lang.ref.Reference$Lock@d1afd3
Total blocked: 54  Total waited: 55

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)

Name: Finalizer
State: WAITING on java.lang.ref.ReferenceQueue$Lock@1e88c7f
Total blocked: 46  Total waited: 46

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

Name: Signal Dispatcher
State: RUNNABLE
Total blocked: 0  Total waited: 0

Stack trace: 

Name: Attach Listener
State: RUNNABLE
Total blocked: 0  Total waited: 0

Stack trace: 

Name: Java2D Disposer
State: WAITING on java.lang.ref.ReferenceQueue$Lock@18771dc
Total blocked: 6  Total waited: 7

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.lang.ref.ReferenceQueue.remove(Unknown Source)
sun.java2d.Disposer.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: AWT-Windows
State: RUNNABLE
Total blocked: 0  Total waited: 0

Stack trace: 
sun.awt.windows.WToolkit.eventLoop(Native Method)
sun.awt.windows.WToolkit.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: Javaws Secure Thread
State: WAITING on java.awt.EventQueue$1AWTInvocationLock@f34071
Total blocked: 5  Total waited: 5

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
java.awt.EventQueue.invokeAndWait(Unknown Source)
javax.swing.SwingUtilities.invokeAndWait(Unknown Source)
com.sun.deploy.ui.DialogTemplate.setVisible(Unknown Source)
com.sun.deploy.ui.UIFactory$1.execute(Unknown Source)
com.sun.javaws.ui.JavawsSysRun$SecureThread.doWork(Unknown Source)
com.sun.javaws.ui.JavawsSysRun$SecureThread.run(Unknown Source)
   - locked java.lang.Object@edd9de

Name: DestroyJavaVM
State: RUNNABLE
Total blocked: 0  Total waited: 0

Stack trace: 

Name: traceMsgQueueThread
State: WAITING on java.util.ArrayList@15cd9a
Total blocked: 17  Total waited: 19

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
com.sun.deploy.util.Trace$TraceMsgQueueChecker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: ConsoleWriterThread
State: WAITING on java.lang.Object@86b376
Total blocked: 11  Total waited: 17

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
com.sun.deploy.util.ConsoleTraceListener$ConsoleWriterThread.run(Unknown Source)

Name: CacheMemoryCleanUpThread
State: WAITING on java.lang.ref.ReferenceQueue$Lock@ba5a81
Total blocked: 17  Total waited: 18

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.lang.ref.ReferenceQueue.remove(Unknown Source)
com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run(Unknown Source)

Name: CacheCleanUpThread
State: WAITING on com.sun.deploy.cache.CleanupThread@825cf3
Total blocked: 15  Total waited: 16

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
com.sun.deploy.cache.CleanupThread.run(Unknown Source)

Name: TimerQueue
State: TIMED_WAITING on javax.swing.TimerQueue@7a4076
Total blocked: 1  Total waited: 19,703

Stack trace: 
java.lang.Object.wait(Native Method)
javax.swing.TimerQueue.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: AWT-Shutdown
State: WAITING on java.lang.Object@4391f0
Total blocked: 6  Total waited: 7

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
sun.awt.AWTAutoShutdown.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: AWT-EventQueue-1
State: WAITING on java.awt.EventQueue@c1e4d5
Total blocked: 168  Total waited: 168

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
java.awt.EventQueue.getNextEvent(Unknown Source)
java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
java.awt.EventDispatchThread.pumpEvents(Unknown Source)
java.awt.SequencedEvent.dispatch(Unknown Source)
java.awt.EventQueue.dispatchEvent(Unknown Source)
java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.Dialog$1.run(Unknown Source)
java.awt.Dialog$3.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.awt.Dialog.show(Unknown Source)
java.awt.Component.show(Unknown Source)
java.awt.Component.setVisible(Unknown Source)
java.awt.Window.setVisible(Unknown Source)
java.awt.Dialog.setVisible(Unknown Source)
com.sun.deploy.ui.DialogTemplate$10.run(Unknown Source)
java.awt.event.InvocationEvent.dispatch(Unknown Source)
java.awt.EventQueue.dispatchEvent(Unknown Source)
java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
java.awt.EventDispatchThread.pumpEvents(Unknown Source)
java.awt.EventDispatchThread.pumpEvents(Unknown Source)
java.awt.EventDispatchThread.run(Unknown Source)

Name: D3D Screen Updater
State: TIMED_WAITING on java.lang.Object@12eabae
Total blocked: 60  Total waited: 3,519

Stack trace: 
java.lang.Object.wait(Native Method)
sun.java2d.d3d.D3DScreenUpdateManager.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: AWT-EventQueue-0
State: WAITING on java.awt.MediaTracker@c6b80e
Total blocked: 51  Total waited: 50

Stack trace: 
java.lang.Object.wait(Native Method)
java.awt.MediaTracker.waitForID(Unknown Source)
javax.swing.ImageIcon.loadImage(Unknown Source)
javax.swing.ImageIcon.<init>(Unknown Source)
javax.swing.ImageIcon.<init>(Unknown Source)
dsi.client.module.login.LoginPanel.comboBoxEventOccurred(LoginPanel.java:348)
dsi.client.awt.DComboBox.fireDComboBoxEvent(DComboBox.java:277)
dsi.client.awt.DComboBox$InternalListener.fireSelectionChanged(DComboBox.java:373)
dsi.client.awt.DComboBox$InternalListener.contentsChanged(DComboBox.java:344)
javax.swing.AbstractListModel.fireContentsChanged(Unknown Source)
dsi.client.awt.ModelFactory$DComboBoxModelImpl.setSelectedItem(ModelFactory.java:47)
javax.swing.JComboBox.setSelectedItem(Unknown Source)
dsi.client.awt.DComboBox.setSelectedItem(DComboBox.java:233)
dsi.client.module.login.LoginPanel.<init>(LoginPanel.java:106)
dsi.client.module.login.SplashFrame2.initializationComplete(SplashFrame2.java:247)
dsi.client.module.StartupInitializer$1.run(StartupInitializer.java:106)
java.awt.event.InvocationEvent.dispatch(Unknown Source)
java.awt.EventQueue.dispatchEvent(Unknown Source)
java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
java.awt.EventDispatchThread.pumpEvents(Unknown Source)
java.awt.EventDispatchThread.pumpEvents(Unknown Source)
java.awt.EventDispatchThread.run(Unknown Source)

Name: Thread-78
State: RUNNABLE
Total blocked: 0  Total waited: 0

Stack trace: 
java.net.PlainSocketImpl.socketAccept(Native Method)
java.net.PlainSocketImpl.accept(Unknown Source)
   - locked java.net.SocksSocketImpl@17ed710
java.net.ServerSocket.implAccept(Unknown Source)
java.net.ServerSocket.accept(Unknown Source)
com.sun.deploy.si.SingleInstanceImpl$SingleInstanceServer$2.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
com.sun.deploy.si.SingleInstanceImpl$SingleInstanceServer.run(Unknown Source)

Name: TimerQueue
State: WAITING on javax.swing.TimerQueue@176eeb9
Total blocked: 3  Total waited: 11

Stack trace: 
java.lang.Object.wait(Native Method)
javax.swing.TimerQueue.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: MultiThreadedHttpConnectionManager cleanup
State: TIMED_WAITING on java.lang.ref.ReferenceQueue$Lock@c5da6
Total blocked: 0  Total waited: 360

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(Unknown Source)
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(Unknown Source)

Name: Image Fetcher 0
State: WAITING on java.lang.Object@edd9de owned by: Javaws Secure Thread
Total blocked: 5  Total waited: 5

Stack trace: 
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
com.sun.javaws.ui.JavawsSysRun.delegate(Unknown Source)
com.sun.deploy.util.DeploySysRun.execute(Unknown Source)
com.sun.deploy.util.DeploySysRun$1.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
com.sun.deploy.util.DeploySysRun.executePrivileged(Unknown Source)
com.sun.deploy.ui.UIFactory.showSecurityDialog(Unknown Source)
com.sun.deploy.security.TrustDeciderDialog.showDialog(Unknown Source)
com.sun.deploy.security.TrustDeciderDialog.showDialog(Unknown Source)
com.sun.deploy.security.X509ExtendedDeployTrustManager.checkServerTrusted(Unknown Source)
   - locked com.sun.deploy.security.X509ExtendedDeployTrustManager@16ff9e0
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
   - locked com.sun.net.ssl.internal.ssl.SSLSocketImpl@1ac8b37
   - locked java.lang.Object@39471b
com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
   - locked java.lang.Object@1284903
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
   - locked sun.net.www.protocol.https.DelegateHttpsURLConnection@c1dc0b
sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
   - locked sun.net.www.protocol.https.HttpsURLConnectionImpl@db4c8d
sun.awt.image.URLImageSource.getDecoder(Unknown Source)
sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
sun.awt.image.ImageFetcher.run(Unknown Source)

Name: RMI TCP Accept-0
State: RUNNABLE
Total blocked: 0  Total waited: 0

Stack trace: 
java.net.PlainSocketImpl.socketAccept(Native Method)
java.net.PlainSocketImpl.accept(Unknown Source)
   - locked java.net.SocksSocketImpl@b7cee4
java.net.ServerSocket.implAccept(Unknown Source)
java.net.ServerSocket.accept(Unknown Source)
sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(Unknown Source)
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(Unknown Source)
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: RMI TCP Connection(1)-192.9.201.25
State: TIMED_WAITING on com.sun.jmx.remote.internal.ArrayNotificationBuffer@191f022
Total blocked: 0  Total waited: 5

Stack trace: 
java.lang.Object.wait(Native Method)
com.sun.jmx.remote.internal.ArrayNotificationBuffer.fetchNotifications(Unknown Source)
com.sun.jmx.remote.internal.ArrayNotificationBuffer$ShareBuffer.fetchNotifications(Unknown Source)
com.sun.jmx.remote.internal.ServerNotifForwarder.fetchNotifs(Unknown Source)
javax.management.remote.rmi.RMIConnectionImpl$2.run(Unknown Source)
javax.management.remote.rmi.RMIConnectionImpl$2.run(Unknown Source)
javax.management.remote.rmi.RMIConnectionImpl.fetchNotifications(Unknown Source)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
sun.rmi.transport.Transport$1.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
sun.rmi.transport.Transport.serviceCall(Unknown Source)
sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: RMI Scheduler(0)
State: TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@1e2f6b0
Total blocked: 0  Total waited: 1

Stack trace: 
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
java.util.concurrent.DelayQueue.take(Unknown Source)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: JMX server connection timeout 126
State: TIMED_WAITING on [I@1b5eba4
Total blocked: 11  Total waited: 12

Stack trace: 
java.lang.Object.wait(Native Method)
com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: RMI TCP Connection(2)-192.9.201.25
State: RUNNABLE
Total blocked: 0  Total waited: 0

Stack trace: 
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
java.io.BufferedInputStream.fill(Unknown Source)
java.io.BufferedInputStream.read(Unknown Source)
   - locked java.io.BufferedInputStream@149959a
java.io.FilterInputStream.read(Unknown Source)
sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Name: RMI TCP Connection(4)-192.9.201.25
State: RUNNABLE
Total blocked: 1  Total waited: 0

Stack trace: 
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
java.io.BufferedInputStream.fill(Unknown Source)
java.io.BufferedInputStream.read(Unknown Source)
   - locked java.io.BufferedInputStream@6489f0
java.io.FilterInputStream.read(Unknown Source)
sun.rmi.transport.tcp.TCPTransport.han
More information forwarded by the CAP member:

The problem was from (and this is in the stack from the original description) here:
java.lang.Object.wait(Native Method)
java.awt.MediaTracker.waitForID(Unknown Source)
javax.swing.ImageIcon.loadImage(Unknown Source)
javax.swing.ImageIcon.<init>(Unknown Source)
javax.swing.ImageIcon.<init>(Unknown Source)
dsi.client.module.login.LoginPanel.comboBoxEventOccurred(LoginPanel.java:348)
 
This looks benign enough, but because of a setup issue, this image was being loaded from a different server (with a self-signed certificate).  I think it was this that brought up the dialog that locked up the system.  I have replicated an XP box running 1.6.0_04.  I don't know if there is a race condition here that makes it a bit random.  It seems, though, that once it happens, it will never work again.  (Changing the Image to be on the same server...with the certificate that was already accepted works, however.)
 
EventQueue 0 is waiting on Javaws Secure Thread 
Image Fetcher 0 is waiting on Javaws Secure Thread
Javaws Secure Thread is waiting on something from an EventQueue
EventQueue 1 is waiting on something, maybe an AWT event

Comments
I believe this to no longer be an issue, please verify.
13-06-2013

EVALUATION Too risky to fix, will require coordinated changes across JVM.
24-02-2011

EVALUATION Andy, the problem described in Comments Section is a separate one. CR 6903354 was filed against it.
06-05-2010

EVALUATION given the analysis in the comment, would it solve (at least this instance of) this problem by pre loading the icon: ImageIcon icon = ResourceManager.getIcon("progress.background.image"); durring plugin/webstart initialization ?
05-05-2010

EVALUATION I have just filed a new RFE agains AWT: 6949936: Provide API for running nested events loops, similar to what modal dialogs do which could potentially help JavaPlugin and JavaWebStart resolve this deadlock. I'd like to provide this API public in JDK7 and then backport it privately (as sun.awt.* classes/methods) into the previous releases.
05-05-2010

EVALUATION Here's continuation of the steps stated above: ... - Focus events are generated in the following order: 1. FOCUS_LOST for the user frame (posted to EQ-0) 2. WINDOW_LOST_FOCUS for the user frame (posted to EQ-0) 3. WINDOW_GAINED_FOCUS for the security dialog (posted to EQ-1) 4. FOCUS_GAINED for the security dialog (posted to EQ-1) These are sequenced events, that means that they should be dispatched in the same order they have been posted. - The WINDOW_GAINED_FOCUS event (3) is being dispatched by EDT-1. This is not the first sequenced event in the chain and therefore EDT-1 enters wait() to wait for the sequenced events that came first (1, 2) be dispatched. - EDT-0 can't dispatch because it waits for the fetcher to fetch the image. This is it. The sequenced events mechanism works according to its design. Actually, deploy has a solution to avoid such deadlocks but it works only for cases when an activity that causes security check is executed on EDT. In such case, deploy starts new event pump on EDT before switching to the security thread (another question is that currently there's no API to directly start new event pump and deploy works it around by displaying an offscreen modal dialog). As a solution to the problem the following is to be considered: 1. New (originally private) API should be provided to directly start new event pump. 2. Ideally, the system code should not block EDT by entering the wait() method. Instead, it should start new event pump as modal dialogs do now. At first, ImageIcon (and probably the whole MediaTracker mechanism) should be rewritten to conform to this rule.
12-11-2009

EVALUATION Here is my current understanding of what is going on: - user code tries to show something that needs image it blocks EventQueue-0 till image is ready - ImageFetcher thread needs to show security dialog to download image This has to be done in secure context and this task is delegated to JavawsSysRunner - Secure Thread attempts to show dialog using invokeAndWait - Dialog is shown on EventQueue-1 Now it gets interesting - AWT code tries to do something with nested events there and does not seem to exit. It is unclear what java.awt.SequencedEvent.dispatch(Unknown Source) is trying to do on EventQueue-1 but it seems to not take into account there are 2 application contexts. SequencedEvent is old code but i guess that recent refactoring of JavawsSysRunner exposed some old existed problem. Reassigning to AWT for further analysis.
03-03-2009