Note: maybe we can use external tools for tracing, I'm also ready to put in code some specific information messages to understand what is happening (using a flag for enable/disable)
Thanks
Last edit: PAscal 2016-01-20
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
My analysis from thread dump of the user,
Deadlock on 2 threads waiting on each other, Main thread is trying to show all components and paint them by locking all components tree of the window and another thread is trying to add new version link on top right meaning its also trying to lock the same components tree or some inner component of the same window which was already locked by previous thread.
Lets confirm from user if disabling the "check for update" option fixes this problem. As disabling it will not launch any other thread to display the version link, hence there is no other thread blocking the main one,
After confirmation from the user i will make a fix to add the version link differently to make sure that we add this version link only after the previous window painting/loading is finished so that we dont have threads waiting on each other. Seem like revalidate(),repaint() of version link is blocking the main thread, fix is made but it needs to be tested by user as we cant reproduce.
@pascal - can you send that user the new jar to test my fix ?
Last edit: Anu 2016-01-21
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello dev team,
How could we find what is happening here ?
Note: maybe we can use external tools for tracing, I'm also ready to put in code some specific information messages to understand what is happening (using a flag for enable/disable)
Thanks
Last edit: PAscal 2016-01-20
will propose users to check if process consume cpu
or try dumping
as described here
http://www.oracle.com/technetwork/java/javase/hangloop-140257.html#gbzay
My analysis from thread dump of the user,
Deadlock on 2 threads waiting on each other, Main thread is trying to show all components and paint them by locking all components tree of the window and another thread is trying to add new version link on top right meaning its also trying to lock the same components tree or some inner component of the same window which was already locked by previous thread.
Lets confirm from user if disabling the "check for update" option fixes this problem. As disabling it will not launch any other thread to display the version link, hence there is no other thread blocking the main one,
After confirmation from the user i will make a fix to add the version link differently to make sure that we add this version link only after the previous window painting/loading is finished so that we dont have threads waiting on each other. Seem like revalidate(),repaint() of version link is blocking the main thread, fix is made but it needs to be tested by user as we cant reproduce.
@pascal - can you send that user the new jar to test my fix ?
Last edit: Anu 2016-01-21
I have committed some additionnal println messages to try to understand ...
Would you like to add some more before I propose it for users testing ?
Last edit: PAscal 2016-01-23
Maybe this can help
http://stackoverflow.com/questions/5240361/java-lang-thread-state-blocked/5240419
or maybe this exemple of application startup code
http://www.javamex.com/tutorials/threads/invokelater.shtml
I tried to display main window in another thread , lets try with this fix if problem is resolved
Diff: