Blocked Thread on GLProfile.get(String)

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Blocked Thread on GLProfile.get(String)

nick.collier
Hi,

With jogl 2.0 rc-11 we are encountering an occasional thread block on GLProfile.get(). This is on Windows 74 64 with the latest JRE 7_21, on a Lenovo with a NVS 3100M GPU with the latest stable drivers. The sporadic nature makes it seem like a race condition. Is there a work-around for this?

The attached image shows the blocked thread in a profiler.



thanks,

Nick
Reply | Threaded
Open this post in threaded view
|

Re: Blocked Thread on GLProfile.get(String)

gouessej
Administrator
Hi

Please recompile Java3D with the very latest aggregated build of JOGL 2.0 (April 25th 2013). I think it comes from Java3D, not from JOGL but I can't be 100% sure. You should perform several tests to determine the origin of your problem. For example, test with an application that uses JOGL 2.0.2 RC 20130425 but neither Java3D nor AWT (my game). Then, try to run the unit tests provided with JOGL. Instead of using YourKit, use JVisualVM and post the stack trace, it would be helpful to determine where it is blocked and by which other method.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Blocked Thread on GLProfile.get(String)

nick.collier
Thanks. We will do as you suggest. We also have reports of this happening in our app when Java3D is not used. Just a jogl based display on its own. Also, from the thread display it looks like the Java3D thread haven't even started yet, only the GLProfile-GL Bootstraping  and event thread are in non-waiting states.

thanks,

Nick
Reply | Threaded
Open this post in threaded view
|

Re: Blocked Thread on GLProfile.get(String)

gouessej
Administrator
Can you reproduce your bug on a tiny test case without Java3D?
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Blocked Thread on GLProfile.get(String)

nick.collier
We ran the unit tests and one consistently fails. I'm not sure if its the source of the hang. An adapted version is attached. JoglBug.java.

When we run it, we sometimes  get the following exception, although it does freeze every time after the initial canvas is displayed.

Thread[main,5,main] GearsES2.init ...
GearsES2 init on Thread[main,5,main]
Chosen GLCapabilities: GLCaps[wgl vid 0x7 arb: rgba 8/8/8/0, opaque, accum-rgba 16/16/16/16, dp/st/ms 24/0/0, dbl, mono  , hw, GLProfile[GL2/GL2.hw], on-scr[.]]
INIT GL IS: jogamp.opengl.gl4.GL4bcImpl
GL_VENDOR: NVIDIA Corporation
GL_RENDERER: NVS 3100M/PCIe/SSE2
GL_VERSION: 3.3.0
GL GLSL: true, has-compiler: true, version 3.30 NVIDIA via Cg compiler, 3.30.0
GL FBO: basic true, full true
GL Profile: GLProfile[GL2/GL2.hw]
GL Renderer Quirks:[NoDoubleBufferedBitmap]
GL:jogamp.opengl.gl4.GL4bcImpl@da3fdb5, 3.3 (hardware) - 3.3.0
gear1 created: com.jogamp.opengl.test.junit.jogl.demos.es2.GearsObjectES2@4ff8254f
gear2 created: com.jogamp.opengl.test.junit.jogl.demos.es2.GearsObjectES2@2c598e8d
gear3 created: com.jogamp.opengl.test.junit.jogl.demos.es2.GearsObjectES2@2b9de1ba
Thread[main,5,main] GearsES2.init FIN
Thread[main,5,main] GearsES2.reshape 0/0 400x300, swapInterval 1, drawable 0x32011659
Thread[main,5,main] GearsES2.display 400x300, swapInterval 1, drawable 0x32011659
Thread[main,5,main] GearsES2.display 400x300, swapInterval 1, drawable 0x32011659
Thread[main-Display-.windows_nil-1-EDT-1,5,main] GearsES2.reshape 0/0 200x150, swapInterval 1, drawable 0x610115e0
Thread[main-Display-.windows_nil-1-EDT-1,5,main] GearsES2.display 200x150, swapInterval 1, drawable 0x610115e0
Thread[main-Display-.windows_nil-1-EDT-1,5,main] GearsES2.display 200x150, swapInterval 1, drawable 0x610115e0
Exception in thread "main" java.lang.RuntimeException: Waited 5000ms for: <416f48e4, 711a924b>[count 1, qsz 0, owner <main-Display-.windows_nil-1-EDT-1>] - <main>
    at jogamp.common.util.locks.RecursiveLockImpl01Unfairish.lock(RecursiveLockImpl01Unfairish.java:198)
    at jogamp.opengl.GLAutoDrawableBase.defaultDisplay(GLAutoDrawableBase.java:388)
    at com.jogamp.opengl.GLAutoDrawableDelegate.display(GLAutoDrawableDelegate.java:160)
    at lib.ext.test.JoglBug.doTest(JoglBug.java:93)
    at lib.ext.test.JoglBug.main(JoglBug.java:116)

I hope this helps. As I said, it looked like our problem was with a hang during GLProfile.get(), but this was a close as we could get with the unit tests.

Nick