Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (480)
Games in Android Showcase (110)
games submitted by our members
Games in WIP (547)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  intermittent crashes with JOGL  (Read 4970 times)
0 Members and 1 Guest are viewing this topic.
Offline joglNoob

Senior Newbie





« Posted 2012-04-18 11:18:05 »

Linux 32bit
JOGL 2.0 (using incremental build from 07/17/2011)
Netbeans 7.1.1
NVIDIA drivers = "version current" that came with Linux.

Program seams to work fine 20-30% of the time. Other times it crashes and I get this:

Info: XInitThreads() called for concurrent Thread support
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0xb7730f2d, pid=12378, tid=2362850160
#
# JRE version: 6.0_31-b04
# Java VM: Java HotSpot(TM) Server VM (20.6-b01 mixed mode linux-x86 )
# Problematic frame:
# C  [libpthread.so.0+0x7f2d]  pthread_mutex_lock+0x1d
#
# An error report file with more information is saved as:
# /usr/local/vcat/hs_err_pid12378.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Result: 134
BUILD SUCCESSFUL (total time: 1 minute 46 seconds)

Any ideas what's going on?
Thanks in advance.
Offline lhkbob

JGO Knight


Medals: 32



« Reply #1 - Posted 2012-04-18 15:22:54 »

If you are using VBOs, you are most likely referencing bad vertices, etc. through a glDrawElements command that has incorrect indices set up for the enabled vertex attributes.  A common case is if the index is too large so it refers to a non-existent vertex, or if one set of attributes is shorter than expected.

Offline joglNoob

Senior Newbie





« Reply #2 - Posted 2012-04-19 04:57:14 »

This same code runs just fine on Windows 32.
Given your description this problem would persist across platforms if it was what you think it is wouldn't it?
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline lhkbob

JGO Knight


Medals: 32



« Reply #3 - Posted 2012-04-19 05:02:37 »

Yes and no, drivers have different behaviors when reading past the end of a VBO, and it depends where the memory lies.  So even on the same OS you might have it fail or not.  It's pretty easy to check, though, you just have to make sure you're calling glDisableClientState(x) as appropriate and that the data you're sending as VBOs makes sense, and that indices into glDrawElements, etc. are correct.

Offline joglNoob

Senior Newbie





« Reply #4 - Posted 2012-04-19 08:32:04 »

How would I go about checking this? Sorry I am new to JOGL. I found instances of the method you were refering to:

protected void drawSideInteriors(DrawContext dc, ShapeData shapeData)
    {
        super.prepareToDrawInterior(dc, this.getActiveSideAttributes(), defaultSideAttributes);

        GL gl = dc.getGL();

        for (ExtrudedBoundaryInfo boundary : shapeData)
        {
            if (!dc.isPickingMode() && this.mustApplyLighting(dc, this.getActiveSideAttributes()))
                gl.getGL2().glNormalPointer(GL.GL_FLOAT, 0, boundary.sideNormalBuffer.rewind());

            if (!dc.isPickingMode() && boundary.sideTextureCoords != null)
            {
                gl.getGL2().glEnable(GL2.GL_TEXTURE_2D);
                gl.getGL2().glEnableClientState(GL2.GL_TEXTURE_COORD_ARRAY);
                gl.getGL2().getGL2().glTexCoordPointer(2, GL.GL_FLOAT, 0, boundary.sideTextureCoords.rewind());
            }
            else
            {
                gl.glDisable(GL2.GL_TEXTURE_2D);
                gl.getGL2().glDisableClientState(GL2.GL_TEXTURE_COORD_ARRAY);
            }

            gl.getGL2().getGL2().getGL2().glVertexPointer(3, GL.GL_FLOAT, 0, boundary.sideVertexBuffer.rewind());

            boundary.sideIndices.rewind();
            for (int j = 0; j < boundary.faceCount; j++)
            {
                if (!dc.isPickingMode() && boundary.sideTextureCoords != null)
                {
                    if (!boundary.sideTextures.get(j).bind(dc))
                        continue;

                    boundary.sideTextures.get(j).applyInternalTransform(dc);
                }

                boundary.sideIndices.position(4 * j);
                boundary.sideIndices.limit(4 * (j + 1));
                gl.glDrawElements(GL.GL_TRIANGLE_STRIP, 4, GL.GL_UNSIGNED_INT, boundary.sideIndices);
            }
        }
    }

Does anything here look suspect? How do you go about checking what you mentioned?
Offline joglNoob

Senior Newbie





« Reply #5 - Posted 2012-04-19 08:42:10 »

Also in case it is relevant, I get the following warning right before the crash message in the OP:

WARNING [org.openide.filesystems.Ordering]: Found same position 100 for both Toolbars/File/PolygonAction.shadow and Toolbars/File/RectangleAction.shadow

This warning persists though even during the 20-30% of the cases when the program works.
Offline lhkbob

JGO Knight


Medals: 32



« Reply #6 - Posted 2012-04-19 14:47:24 »

The only suspect thing I can see is that you're not calling glEnableClientState(GL_NORMAL_ARRAY) and glDisableClientState(GL_NORMAL_ARRAY), even though you only set the glNormalPointer during certain conditions.

I also don't see where you call glEnableClientState(GL_VERTEX_ARRAY).

You want to look for these types of inconsistencies anywhere you use the glVertexPointer code to perform rendering.  Another draw method to look for is glDrawArrays(), which you might be using.

Offline joglNoob

Senior Newbie





« Reply #7 - Posted 2012-04-19 16:35:03 »

I'd like to exhaust other solutions before jumping into editing code I didn't write especially given the size of this project.
You mention the reason this code might be working in Windows but works only part of the time in Linux is because of the way
drivers (assume graphics card drivers?) interact with VBOs. Could it be possible I am not using the proper/best
drivers?

Offline lhkbob

JGO Knight


Medals: 32



« Reply #8 - Posted 2012-04-19 18:42:11 »

It is possible, you may want to try creating a very rudimentary demo, too.

Offline gouessej
« Reply #9 - Posted 2012-04-19 21:37:12 »

Hi

lhkbob is right, please try to provide a small test case. I assume you try to use WorldWind with JOGL 2.0. Some people already succeeded in doing it, maybe there is something wrong in your code.

Anyway, please use a more recent version of JOGL 2.0. If you have a real problem with a real bug in JOGL, we won't be able to help you if you don't use the latest build.

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline joglNoob

Senior Newbie





« Reply #10 - Posted 2012-04-23 08:35:21 »

Guys,
Can you please tell me why newt.all and nativewindow.all are missing in all post Sept/Oct 2011 builds?
Should I use newt.core or any other newt.xyz and nativewindow.xyz in atomic folder to replace them if I want to use latest stuff?

Most JOGL tutorials require using 4 files: jogl.all, gluren-rt, newt.all and nativewindow.all. Last 2 are missing in newer builds.

Offline gouessej
« Reply #11 - Posted 2012-04-23 19:56:25 »

Use jogl.all.jar and gluegen-rt.jar or all atomic JARs. jogl.all.jar contains NEWT stuffs too.

Offline joglNoob

Senior Newbie





« Reply #12 - Posted 2012-04-24 04:14:40 »

Thanks,

Now I am basically back to where I was in the OP except with the latest (04/22/2012) JOGL build. (still works, but not every time and gives the same error).
I am currently getting the following blocks of warnings in case this sheds some light on this issue:

Warning: com.jogamp.nativewindow.swt.SWTAccessor cannot access org.eclipse.swt.graphics.GCData
Warning: com.jogamp.nativewindow.swt.SWTAccessor cannot access org.eclipse.swt.widgets.Control
Warning: com.jogamp.nativewindow.swt.SWTAccessor$1 cannot access org.eclipse.swt.widgets.Control
Warning: com.jogamp.nativewindow.swt.SWTAccessor$2 cannot access org.eclipse.swt.graphics.GCData
Warning: com.jogamp.nativewindow.swt.SWTAccessor$2 cannot access org.eclipse.swt.widgets.Control
Warning: com.jogamp.nativewindow.swt.SWTAccessor$3 cannot access org.eclipse.swt.graphics.GCData
Warning: com.jogamp.nativewindow.swt.SWTAccessor$3 cannot access org.eclipse.swt.widgets.Control
Warning: com.jogamp.opengl.swt.GLCanvas cannot access org.eclipse.swt.events.ControlListener
Warning: com.jogamp.opengl.swt.GLCanvas cannot access org.eclipse.swt.events.PaintListener

and also:

Warning: 1.0.com.sun.codemodel.JArrayClass cannot access com.sun.codemodel.JArrayClass$1
Warning: 1.0.com.sun.codemodel.JArrayClass$1 cannot access com.sun.codemodel.JArrayClass$1
Warning: 1.0.com.sun.codemodel.JCodeModel$1 cannot access com.sun.codemodel.JCodeModel$1
Warning: 1.0.com.sun.codemodel.JCodeModel$JReferencedClass cannot access com.sun.codemodel.JCodeModel$1
Warning: 1.0.com.sun.codemodel.JDefinedClass cannot access com.sun.codemodel.JNestedClass
Warning: 1.0.com.sun.codemodel.JExpr cannot access com.sun.codemodel.JExpr$3
Warning: 1.0.com.sun.codemodel.JExpr$3 cannot access com.sun.codemodel.JExpr$3
Warning: 1.0.com.sun.codemodel.JNestedClass cannot access com.sun.codemodel.JNestedClass
Warning: 1.0.com.sun.codemodel.JNullType cannot access com.sun.codemodel.JNullType$1
Warning: 1.0.com.sun.codemodel.JNullType$1 cannot access com.sun.codemodel.JNullType$1

but I was reading that the 2nd block's warnings are not significant.

Any thoughts?
Offline gouessej
« Reply #13 - Posted 2012-04-24 22:52:34 »

I didn't know you use the experimental SWT heavyweight canvas. Please report your problem on the official forum of JogAmp, you will get more replies.

Offline joglNoob

Senior Newbie





« Reply #14 - Posted 2012-04-25 08:43:27 »

I downloaded a swt.jar and added it to the project and those warnings went away, but the problem didn't Sad
Now all I get are some android.xyz.abs warnings, been ignoring them for now.
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

atombrot (24 views)
2014-08-19 09:29:53

Tekkerue (24 views)
2014-08-16 06:45:27

Tekkerue (23 views)
2014-08-16 06:22:17

Tekkerue (13 views)
2014-08-16 06:20:21

Tekkerue (20 views)
2014-08-16 06:12:11

Rayexar (58 views)
2014-08-11 02:49:23

BurntPizza (38 views)
2014-08-09 21:09:32

BurntPizza (30 views)
2014-08-08 02:01:56

Norakomi (37 views)
2014-08-06 19:49:38

BurntPizza (67 views)
2014-08-03 02:57:17
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!