Page 1 of 1

Servoy Client LOCKING UP!!

PostPosted: Fri Apr 23, 2010 8:11 pm
by ars
Hi all,

The Servoy Client gets locked up and became unresponsive when I am in focus in one of field in the application and without clicking at outside, clicking at any other application running. The Java console is also getting locked up. I need to forcefully kill the client and again starting the application. This is the complete procedure, what I have did:

1. Open the Solution with the Servoy Smart Client
2. Select any field in the solution.(focused the field)
3. Without leaving the text field, click on another program (I selected Firefox)
4. When I am returning to Application, It is completely locked up and I need to force quit

This is the below server log, I am getting.

This is when, Application locked up.
err1.PNG
This is when, Application locked up.
err1.PNG (181.36 KiB) Viewed 4226 times


This is after forcefully quitting.
err2.PNG
This is after forcefully quitting,
err2.PNG (209.94 KiB) Viewed 4214 times


I am running with Servoy 4.1.5 and with Java update 18. This is also reproducible in Servoy 4.1.6 and with Java Update 20.

Can anyone have any idea on the same?

Thanks,

Re: Servoy Client LOCKING UP!!

PostPosted: Fri Apr 23, 2010 8:56 pm
by ars
I have tried with setting the server side JVM max heap size form 256m to 750m and lowering the ping delay to 60 in the network setting in the servoy admin page. But, still able to reproduce the issue.

Re: Servoy Client LOCKING UP!!

PostPosted: Mon Apr 26, 2010 12:24 pm
by jcompagner
what you can do if you smart client is locked and you have installed a java 6 JDK installation
go to that install folder jdk1.6\bin and there you have a jvisualvm.exe
if you start that you will get a profiler and you should see in the tree your webstart application.
Connect to it and on the threads tab you have a button thread dump.
That will result in a thread dump txt where we can see where it hangs in.

Re: Servoy Client LOCKING UP!!

PostPosted: Tue Apr 27, 2010 8:25 pm
by ars
Hi Johan,

Thanks for your reply.
Here, is the complete thread dump.

Code: Select all
"TaskExecuter[2]" daemon prio=6 tid=66 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.servoy.j2db.util.TaskExecuter.run(TaskExecuter.java:29)
   at java.lang.Thread.run()

  "TaskExecuter[3]" daemon prio=6 tid=67 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.servoy.j2db.util.TaskExecuter.run(TaskExecuter.java:29)
   at java.lang.Thread.run()

  "RMI TCP Connection(2)-113.19.33.139" daemon prio=5 tid=77 RUNNABLE
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read()
   at java.io.BufferedInputStream.fill()
   at java.io.BufferedInputStream.read()
   at java.io.FilterInputStream.read()
   at sun.rmi.transport.tcp.TCPTransport.handleMessages()
   at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0()
   at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask()
   at java.util.concurrent.ThreadPoolExecutor$Worker.run()
   at java.lang.Thread.run()

  "RMI TCP Accept-0" daemon prio=5 tid=76 RUNNABLE
   at java.net.PlainSocketImpl.socketAccept(Native Method)
   at java.net.PlainSocketImpl.accept()
   at java.net.ServerSocket.implAccept()
   at java.net.ServerSocket.accept()
   at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept()
   at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop()
   at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run()
   at java.lang.Thread.run()

  "PingThread" prio=5 tid=41 TIMED_WAITING
   at java.lang.Object.wait(Native Method)
   at com.servoy.j2db.util.rmi.Zf.run(Zf.java:21)
   at java.lang.Thread.run()

  "RMI TCP Connection(3)-113.19.33.139" daemon prio=5 tid=79 RUNNABLE
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read()
   at java.io.BufferedInputStream.fill()
   at java.io.BufferedInputStream.read()
   at java.io.FilterInputStream.read()
   at sun.rmi.transport.tcp.TCPTransport.handleMessages()
   at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0()
   at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask()
   at java.util.concurrent.ThreadPoolExecutor$Worker.run()
   at java.lang.Thread.run()

  "scheduler_QuartzSchedulerThread" prio=5 tid=59 TIMED_WAITING
   at java.lang.Thread.sleep(Native Method)
   at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:394)

  "scheduler_Worker-0" prio=4 tid=58 TIMED_WAITING
   at java.lang.Object.wait(Native Method)
   at org.quartz.simpl.SimpleThreadPool.getNextRunnable(SimpleThreadPool.java:428)
   at org.quartz.simpl.SimpleThreadPool.access$000(SimpleThreadPool.java:47)
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:518)

  "TaskExecuter[4]" daemon prio=6 tid=69 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.servoy.j2db.util.TaskExecuter.run(TaskExecuter.java:29)
   at java.lang.Thread.run()

  "TaskExecuter[5]" daemon prio=6 tid=70 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.servoy.j2db.util.TaskExecuter.run(TaskExecuter.java:29)
   at java.lang.Thread.run()

  "TaskExecuter[6]" daemon prio=6 tid=71 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.servoy.j2db.util.TaskExecuter.run(TaskExecuter.java:29)
   at java.lang.Thread.run()

  "RMI Scheduler(0)" daemon prio=5 tid=46 TIMED_WAITING
   at sun.misc.Unsafe.park(Native Method)
   at java.util.concurrent.locks.LockSupport.parkNanos()
   at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos()
   at java.util.concurrent.DelayQueue.take()
   at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()
   at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take()
   at java.util.concurrent.ThreadPoolExecutor.getTask()
   at java.util.concurrent.ThreadPoolExecutor$Worker.run()
   at java.lang.Thread.run()

  "JMX server connection timeout 78" daemon prio=5 tid=78 TIMED_WAITING
   at java.lang.Object.wait(Native Method)
   at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run()
   at java.lang.Thread.run()

  "AWT-Shutdown" prio=5 tid=26 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at sun.awt.AWTAutoShutdown.run()
   at java.lang.Thread.run()

  "AWT-EventQueue-1" prio=6 tid=25 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at java.awt.EventQueue.getNextEvent()
   at java.awt.EventDispatchThread.pumpOneEventForFilters()
   at java.awt.EventDispatchThread.pumpEventsForFilter()
   at java.awt.EventDispatchThread.pumpEventsForHierarchy()
   at java.awt.EventDispatchThread.pumpEvents()
   at java.awt.EventDispatchThread.pumpEvents()
   at java.awt.EventDispatchThread.run()

  "ConsoleWriterThread" daemon prio=5 tid=19 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.sun.deploy.util.ConsoleTraceListener$ConsoleWriterThread.run()

  "CacheMemoryCleanUpThread" daemon prio=5 tid=20 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.ref.ReferenceQueue.remove()
   at java.lang.ref.ReferenceQueue.remove()
   at com.sun.deploy.cache.MemoryCache$LoadedResourceCleanupThread.run()

  "SignallingChannel" prio=5 tid=40 RUNNABLE
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read()
   at com.sun.net.ssl.internal.ssl.InputRecord.readFully()
   at com.sun.net.ssl.internal.ssl.InputRecord.read()
   at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord()
   at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord()
   at com.sun.net.ssl.internal.ssl.AppInputStream.read()
   at com.sun.net.ssl.internal.ssl.AppInputStream.read()
   at com.servoy.j2db.util.rmi.compressing.Zc.Za(Zc.java:71)
   at com.servoy.j2db.util.rmi.compressing.Zc.read(Zc.java:11)
   at java.io.DataInputStream.readInt()
   at com.servoy.j2db.util.rmi.Zj.run(Zj.java:13)

  "DestroyJavaVM" prio=5 tid=16 RUNNABLE

  "TaskExecuter[0]" daemon prio=5 tid=45 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.servoy.j2db.util.TaskExecuter.run(TaskExecuter.java:29)
   at java.lang.Thread.run()

  "Thread-15" prio=5 tid=53 RUNNABLE
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read()
   at com.sun.net.ssl.internal.ssl.InputRecord.readFully()
   at com.sun.net.ssl.internal.ssl.InputRecord.read()
   at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord()
   at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord()
   at com.sun.net.ssl.internal.ssl.AppInputStream.read()
   at com.sun.net.ssl.internal.ssl.AppInputStream.read()
   at com.servoy.j2db.util.rmi.compressing.Zc.Za(Zc.java:71)
   at com.servoy.j2db.util.rmi.compressing.Zc.read(Zc.java:11)
   at com.servoy.j2db.util.rmi.Zk.run(Zk.java:26)

  "CacheCleanUpThread" daemon prio=5 tid=21 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.sun.deploy.cache.CleanupThread.run()

  "TimerQueue" daemon prio=5 tid=22 WAITING
   at java.lang.Object.wait(Native Method)
   at javax.swing.TimerQueue.run()
   at java.lang.Thread.run()

  "GC Daemon" daemon prio=2 tid=48 TIMED_WAITING
   at java.lang.Object.wait(Native Method)
   at sun.misc.GC$Daemon.run()

  "Thread-14" prio=5 tid=52 RUNNABLE
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read()
   at java.net.SocketInputStream.read()
   at com.servoy.j2db.util.rmi.Zk.run(Zk.java:26)

  "TimerQueue" daemon prio=5 tid=54 WAITING
   at java.lang.Object.wait(Native Method)
   at javax.swing.TimerQueue.run()
   at java.lang.Thread.run()

  "AWT-EventQueue-0" prio=6 tid=38 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at java.awt.EventQueue.getNextEvent()
   at java.awt.EventDispatchThread.pumpOneEventForFilters()
   at java.awt.EventDispatchThread.pumpEventsForFilter()
   at java.awt.EventDispatchThread.pumpEventsForHierarchy()
   at java.awt.EventDispatchThread.pumpEvents()
   at java.awt.SequencedEvent.dispatch()
   at com.servoy.j2db.util.SwingHelper.dispatchEvents(SwingHelper.java:35)
   at com.servoy.j2db.scripting.JSApplication.js_updateUI(JSApplication.java:1552)
   at sun.reflect.GeneratedMethodAccessor63.invoke()
   at sun.reflect.DelegatingMethodAccessorImpl.invoke()
   at java.lang.reflect.Method.invoke()
   at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:179)
   at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:347)
   at org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:111)
   at org.mozilla.javascript.gen.c83._c0(:79)
   at org.mozilla.javascript.gen.c83.call()
   at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:101)
   at org.mozilla.javascript.gen.c112._c0(onRecordEditStop:3)
   at org.mozilla.javascript.gen.c112.call(onRecordEditStop)
   at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:387)
   at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3125)
   at org.mozilla.javascript.gen.c112.call(onRecordEditStop)
   at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:42)
   at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:143)
   at com.servoy.j2db.FormController.Za(FormController.java:1078)
   at com.servoy.j2db.FormController.Za(FormController.java:1013)
   at com.servoy.j2db.FormController.Zb(FormController.java:369)
   at com.servoy.j2db.FormController.stopUIEditing(FormController.java:667)
   at com.servoy.j2db.dataui.Zxd.Zb(Zxd.java:42)
   at com.servoy.j2db.dataui.SpecialTabPanel.stopUIEditing(SpecialTabPanel.java:283)
   at com.servoy.j2db.dataprocessing.Zfb.Zb(Zfb.java:73)
   at com.servoy.j2db.dataui.Zwd.stopUIEditing(Zwd.java:86)
   at com.servoy.j2db.Zpe.stopUIEditing(Zpe.java:3)
   at com.servoy.j2db.FormController.stopUIEditing(FormController.java:370)
   at com.servoy.j2db.dataui.Zxd.Zb(Zxd.java:42)
   at com.servoy.j2db.dataui.SpecialTabPanel.stopUIEditing(SpecialTabPanel.java:283)
   at com.servoy.j2db.dataprocessing.Zfb.Zb(Zfb.java:73)
   at com.servoy.j2db.dataui.Zwd.stopUIEditing(Zwd.java:86)
   at com.servoy.j2db.Zpe.stopUIEditing(Zpe.java:3)
   at com.servoy.j2db.FormController.stopUIEditing(FormController.java:370)
   at com.servoy.j2db.dataui.Zxd.Zb(Zxd.java:42)
   at com.servoy.j2db.dataui.SpecialTabPanel.stopUIEditing(SpecialTabPanel.java:283)
   at com.servoy.j2db.dataprocessing.Zfb.Zb(Zfb.java:73)
   at com.servoy.j2db.dataui.Zwd.stopUIEditing(Zwd.java:86)
   at com.servoy.j2db.Zpe.stopUIEditing(Zpe.java:3)
   at com.servoy.j2db.FormController.stopUIEditing(FormController.java:370)
   at com.servoy.j2db.dataui.Zxd.Zb(Zxd.java:42)
   at com.servoy.j2db.dataui.SpecialTabPanel.stopUIEditing(SpecialTabPanel.java:283)
   at com.servoy.j2db.dataprocessing.Zfb.Zb(Zfb.java:73)
   at com.servoy.j2db.dataui.Zwd.stopUIEditing(Zwd.java:86)
   at com.servoy.j2db.Zpe.stopUIEditing(Zpe.java:3)
   at com.servoy.j2db.FormController.stopUIEditing(FormController.java:370)
   at com.servoy.j2db.FormController.prepareForSave(FormController.java:658)
   at com.servoy.j2db.dataprocessing.EditRecordList.Za(EditRecordList.java:223)
   at com.servoy.j2db.dataprocessing.EditRecordList.prepareForSave(EditRecordList.java:406)
   at com.servoy.j2db.FormController.Za(FormController.java:80)
   at com.servoy.j2db.FormController.executeFunction(FormController.java:439)
   at com.servoy.j2db.Zhb.Za(Zhb.java:5)
   at com.servoy.j2db.dataui.EventExecutor.Za(EventExecutor.java:17)
   at com.servoy.j2db.dataui.EventExecutor.focusLost(EventExecutor.java:74)
   at java.awt.AWTEventMulticaster.focusLost()
   at java.awt.AWTEventMulticaster.focusLost()
   at java.awt.Component.processFocusEvent()
   at java.awt.Component.processEvent()
   at java.awt.Container.processEvent()
   at java.awt.Component.dispatchEventImpl()
   at java.awt.Container.dispatchEventImpl()
   at java.awt.Component.dispatchEvent()
   at java.awt.KeyboardFocusManager.redispatchEvent()
   at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions()
   at java.awt.DefaultKeyboardFocusManager.dispatchEvent()
   at java.awt.Component.dispatchEventImpl()
   at java.awt.Container.dispatchEventImpl()
   at java.awt.Component.dispatchEvent()
   at java.awt.EventQueue.dispatchEvent()
   at java.awt.SentEvent.dispatch()
   at java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch()
   at java.awt.DefaultKeyboardFocusManager.sendMessage()
   at java.awt.DefaultKeyboardFocusManager.dispatchEvent()
   at java.awt.Component.dispatchEventImpl()
   at java.awt.Container.dispatchEventImpl()
   at java.awt.Window.dispatchEventImpl()
   at java.awt.Component.dispatchEvent()
   at java.awt.EventQueue.dispatchEvent()
   at java.awt.SequencedEvent.dispatch()
   at java.awt.EventQueue.dispatchEvent()
   at java.awt.EventDispatchThread.pumpOneEventForFilters()
   at java.awt.EventDispatchThread.pumpEventsForFilter()
   at java.awt.EventDispatchThread.pumpEventsForHierarchy()
   at java.awt.EventDispatchThread.pumpEvents()
   at java.awt.EventDispatchThread.pumpEvents()
   at java.awt.EventDispatchThread.run()

  "RMI RenewClean-[127.0.0.1:1099]" daemon prio=5 tid=47 TIMED_WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.ref.ReferenceQueue.remove()
   at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run()
   at java.lang.Thread.run()

  "RMI TCP Accept-3014" daemon prio=5 tid=49 RUNNABLE
   at java.net.PlainSocketImpl.socketAccept(Native Method)
   at java.net.PlainSocketImpl.accept()
   at java.net.ServerSocket.implAccept()
   at java.net.ServerSocket.accept()
   at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop()
   at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run()
   at java.lang.Thread.run()

  "RMI Reaper" prio=5 tid=50 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.ref.ReferenceQueue.remove()
   at java.lang.ref.ReferenceQueue.remove()
   at sun.rmi.transport.ObjectTable$Reaper.run()
   at java.lang.Thread.run()

  "Signal Dispatcher" daemon prio=9 tid=4 RUNNABLE

  "Finalizer" daemon prio=8 tid=3 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.ref.ReferenceQueue.remove()
   at java.lang.ref.ReferenceQueue.remove()
   at java.lang.ref.Finalizer$FinalizerThread.run()

  "RMI TCP Connection(1)-113.19.33.139" daemon prio=5 tid=51 RUNNABLE
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read()
   at java.io.BufferedInputStream.fill()
   at java.io.BufferedInputStream.read()
   at java.io.FilterInputStream.read()
   at sun.rmi.transport.tcp.TCPTransport.handleMessages()
   at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0()
   at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask()
   at java.util.concurrent.ThreadPoolExecutor$Worker.run()
   at java.lang.Thread.run()

  "Reference Handler" daemon prio=10 tid=2 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at java.lang.ref.Reference$ReferenceHandler.run()

  "traceMsgQueueThread" daemon prio=5 tid=8 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.sun.deploy.util.Trace$TraceMsgQueueChecker.run()
   at java.lang.Thread.run()

  "Attach Listener" daemon prio=5 tid=5 RUNNABLE

  "TaskExecuter[1]" daemon prio=6 tid=65 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.servoy.j2db.util.TaskExecuter.run(TaskExecuter.java:29)
   at java.lang.Thread.run()

  "Javaws Secure Thread" daemon prio=5 tid=14 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.Object.wait(Object.java:485)
   at com.sun.javaws.ui.JavawsSysRun$SecureThread.run()

  "Java2D Disposer" daemon prio=10 tid=10 WAITING
   at java.lang.Object.wait(Native Method)
   at java.lang.ref.ReferenceQueue.remove()
   at java.lang.ref.ReferenceQueue.remove()
   at sun.java2d.Disposer.run()
   at java.lang.Thread.run()

  "AWT-Windows" daemon prio=6 tid=12 RUNNABLE
   at sun.awt.windows.WToolkit.eventLoop(Native Method)
   at sun.awt.windows.WToolkit.run()

Re: Servoy Client LOCKING UP!!

PostPosted: Wed Apr 28, 2010 2:39 pm
by jcompagner
don't know exactly why it happens
But it is because of a application.updateUI() call you do somewhere from an onRecordEditStop event method (this method doesnt call it it seems but a method that that method calls)

Remove that updateUI and the hang should not happen anymore.

Why it exactly gets to that state that you have i can't see. Maybe it is because of some onfocuslost that is triggered and then stuff should happen in sequence
but the updateUI() call results in the wrong sequence of events.

Re: Servoy Client LOCKING UP!!

PostPosted: Thu Apr 29, 2010 5:50 pm
by ars
Thanks Johan, for your reply.

It is fixed. There was an application.updateUI() call in one of the Form's onRecordEditStop event, that cause the client hang. It was not necessarily required at that place. So, I have removed that and It is fixed, now. :D

Thanks Johan for your help.