Bug 679

Summary: NullPointerException in some Mac OS X computers
Product: [JogAmp] Jogl Reporter: president
Component: openglAssignee: Sven Gothel <sgothel>
Status: RESOLVED FIXED    
Severity: blocker CC: andres.colubri, gouessej
Priority: ---    
Version: 2   
Hardware: All   
OS: macosx   
Type: --- SCM Refs:
jogl 10b4957dc36005453d2a4e7a3b4de4df20d0c901 jogl 24fe89e6d7cc551aaffb6c95624271eef027b275 jogl 97401c4b832aa6f65bfbad47c54d18e4b720dbce
Workaround: ---
Attachments: Complete Jogl log

Description president 2013-02-01 19:49:40 CET
Created attachment 408 [details]
Complete Jogl log

Test case: com.ardor3d.example.canvas.JoglAwtExample
OS: Mac OS X version is 10.6.8 
Java: Java Web Start 1.6.0_37 
Computer: MacBook1,1 
Graphics Card: 
  Intel GMA 950: 
  Chipset Model:	GMA 950 
  Type:	GPU 
  Bus:	Built-In 
  VRAM (Total):	64 MB of Shared System Memory 
  Vendor:	Intel (0x8086) 
  Device ID:	0x27a2 
  Revision ID:	0x0003 

Here is the exception of that JoglAwtExample generates: 


java.lang.NullPointerException 
        at jogamp.opengl.gl4.GL4bcImpl.glFlush(GL4bcImpl.java:5334) 
        at jogamp.opengl.macosx.cgl.MacOSXCGLContext$NSOpenGLImpl.release(MacOSXCGLContext.java:776) 
        at jogamp.opengl.macosx.cgl.MacOSXCGLContext.destroyContextARBImpl(MacOSXCGLContext.java:260) 
        at jogamp.opengl.GLContextImpl.createContextARBVersions(GLContextImpl.java:974) 
        at jogamp.opengl.GLContextImpl.createContextARBMapVersionsAvailable(GLContextImpl.java:911) 
        at jogamp.opengl.GLContextImpl.mapGLVersions(GLContextImpl.java:858) 
        at jogamp.opengl.GLContextImpl.createContextARB(GLContextImpl.java:761) 
        at jogamp.opengl.macosx.cgl.MacOSXCGLContext.createImpl(MacOSXCGLContext.java:299) 
        at jogamp.opengl.macosx.cgl.MacOSXOnscreenCGLContext.createImpl(MacOSXOnscreenCGLContext.java:80) 
        at jogamp.opengl.GLContextImpl.makeCurrentWithinLock(GLContextImpl.java:592) 
        at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:509) 
        at jogamp.opengl.macosx.cgl.MacOSXCGLDrawableFactory.getOrCreateOSXSharedResource(MacOSXCGLDrawableFactory.java:241) 
        at jogamp.opengl.macosx.cgl.MacOSXCGLDrawableFactory.createSharedResource(MacOSXCGLDrawableFactory.java:289) 
        at javax.media.opengl.GLProfile.initProfilesForDeviceCritical(GLProfile.java:1560) 
        at javax.media.opengl.GLProfile.initProfilesForDevice(GLProfile.java:1521) 
        at javax.media.opengl.GLProfile.initProfilesForDefaultDevices(GLProfile.java:1490) 
        at javax.media.opengl.GLProfile.access$100(GLProfile.java:76) 
        at javax.media.opengl.GLProfile$1.run(GLProfile.java:157) 
        at java.security.AccessController.doPrivileged(Native Method) 
        at javax.media.opengl.GLProfile.initSingleton(GLProfile.java:123) 
        at javax.media.opengl.GLProfile.getProfileMap(GLProfile.java:1857) 
        at javax.media.opengl.GLProfile.get(GLProfile.java:801) 
        at javax.media.opengl.GLProfile.get(GLProfile.java:830) 
        at javax.media.opengl.GLProfile.getMaxFixedFunc(GLProfile.java:636) 
        at com.ardor3d.framework.jogl.CapsUtil.getCapsForSettings(CapsUtil.java:34) 
        at com.ardor3d.framework.jogl.JoglAwtCanvas.<init>(JoglAwtCanvas.java:42) 
        at com.ardor3d.example.canvas.JoglAwtExample.addCanvas(JoglAwtExample.java:153) 
        at com.ardor3d.example.canvas.JoglAwtExample.main(JoglAwtExample.java:105) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
        at java.lang.reflect.Method.invoke(Method.java:597) 
        at com.sun.javaws.Launcher.executeApplication(Launcher.java:1919) 
        at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1852) 
        at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1614) 
        at com.sun.javaws.Launcher.run(Launcher.java:139) 
        at java.lang.Thread.run(Thread.java:680)
Comment 1 Julien Gouesse 2013-02-04 09:58:16 CET
Hi

I will try to reproduce this bug on a Mac Book Pro tonight. If I fail, I will need your help.
Comment 2 president 2013-02-12 16:17:38 CET
(In reply to comment #1)
> Hi
> 
> I will try to reproduce this bug on a Mac Book Pro tonight. If I fail, I
> will need your help.

I'll be happy to help if there is anything you want me to do.
Comment 3 Julien Gouesse 2013-02-12 19:36:09 CET
(In reply to comment #2)
> (In reply to comment #1)
> > Hi
> > 
> > I will try to reproduce this bug on a Mac Book Pro tonight. If I fail, I
> > will need your help.
> 
> I'll be happy to help if there is anything you want me to do.

Sven, if you could fix this thing, it will probably fix this bug too:
http://forum.jogamp.org/JME3-Unified-Renderer-Canvas-Use-Issue-tp4028152p4028164.html
Comment 4 Julien Gouesse 2013-02-13 00:31:51 CET
Renanse broke something, I can only get ardor3d-performance under Eclipse 4.2.1. My environment is almost ready under Mac OS X 10.6.8.
Comment 5 Julien Gouesse 2013-02-13 00:37:03 CET
I just get this:
2013-02-13 00:34:16.100 java[484:903] [Java CocoaComponent compatibility mode]: Enabled
2013-02-13 00:34:16.102 java[484:903] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000
2013-02-13 00:34:17.767 java[484:e003] *** -[NSConditionLock unlock]: lock (<NSConditionLock: 0x100190030> '(null)') unlocked when not locked
2013-02-13 00:34:17.767 java[484:e003] *** Break on _NSLockError() to debug.
2013-02-13 00:34:17.868 java[484:e003] *** -[NSConditionLock unlock]: lock (<NSConditionLock: 0x102069410> '(null)') unlocked when not locked
2013-02-13 00:34:17.868 java[484:e003] *** Break on _NSLockError() to debug.
2013-02-13 00:34:18.010 java[484:e003] *** -[NSConditionLock unlock]: lock (<NSConditionLock: 0x1001ab560> '(null)') unlocked when not locked
2013-02-13 00:34:18.011 java[484:e003] *** Break on _NSLockError() to debug.

No AWT example can be started.
Comment 6 Julien Gouesse 2013-02-14 20:59:07 CET
Ok there is no problem, the window just always appears behind all others. I don't reproduce Runiter's bug. Can someone test with exactly the same hardware? In my humble opinion, it might come from the driver. I use the same OS, the same version.
Comment 7 ac 2013-02-20 16:48:26 CET
I can confirm this same NPE error on a 2007 Mac mini with GMA 950:

  Model Name:	Mac mini
  Model Identifier:	Macmini2,1
  Processor Name:	Intel Core 2 Duo
  Processor Speed:	2 GHz
  Number Of Processors:	1
  Total Number Of Cores:	2
  L2 Cache:	4 MB
  Memory:	2 GB
  Bus Speed:	667 MHz
  Boot ROM Version:	MM21.009A.B00
  SMC Version (system):	1.19f2
  Serial Number (system):	YM746077YL2
  Hardware UUID:	00000000-0000-1000-8000-0016CBAD0AC9

  Chipset Model:	GMA 950
  Type:	GPU
  Bus:	Built-In
  VRAM (Total):	64 MB of Shared System Memory
  Vendor:	Intel (0x8086)
  Device ID:	0x27a2
  Revision ID:	0x0003

java version "1.6.0_41"
Java(TM) SE Runtime Environment (build 1.6.0_41-b02-445-10M4107)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-445, mixed mode)

This happens using a recent autobuild (less than a week old at the time of this writing). Switching to RC11 makes the error disappear.
Comment 8 Julien Gouesse 2013-02-20 17:35:28 CET
Thank you for pointing that. Please can you test some other auto builds generated after the RC11 in order to help us to find which change(s) broke that under Mac?
Comment 9 Sven Gothel 2013-02-20 21:54:20 CET
Fix NPE of Bug 679: The ctx was released w/o fully initialized (no proper ARB ctx of expected version ?)

Closing now - Please reopen if not fixed. If so - please provide a new full stack trace and DEBUG log file - thank you.
Comment 10 ac 2013-02-20 23:09:34 CET
Now I get the following error, using the changes from commit 10b4957dc36005453d2a4e7a3b4de4df20d0c901:

javax.media.opengl.GLException: Profile GL_DEFAULT is not available on null, but: []
	at javax.media.opengl.GLProfile.get(GLProfile.java:771)
	at javax.media.opengl.GLProfile.getDefault(GLProfile.java:555)
	at javax.media.opengl.GLProfile.getDefault(GLProfile.java:566)
        ...

on the Mac mini GMA950. The last jogl autobuild that used to work with that hardware was b881 (20121230).
Comment 11 Sven Gothel 2013-02-21 06:05:12 CET
(In reply to comment #10)
> Now I get the following error, using the changes from commit
> 10b4957dc36005453d2a4e7a3b4de4df20d0c901:
> 
> javax.media.opengl.GLException: Profile GL_DEFAULT is not available on null,
> but: []
> 	at javax.media.opengl.GLProfile.get(GLProfile.java:771)
> 	at javax.media.opengl.GLProfile.getDefault(GLProfile.java:555)
> 	at javax.media.opengl.GLProfile.getDefault(GLProfile.java:566)
>         ...
> 
> on the Mac mini GMA950. The last jogl autobuild that used to work with that
> hardware was b881 (20121230).

If you could send me the debug log file of etc/tests.sh (wiki FAQ/Bugreport)
I could have an idea why it fails. Pls attach them.
Any test w/ all debug properties enabled would do it ..

Probably some strict GL version checking fails here .. and  I like to know the details
to be able to fix it. We had to add this checks to fix Mesa/Intel driver .. the irony .. :)
Comment 12 Sven Gothel 2013-02-21 06:07:25 CET
It is probably commit
  http://jogamp.org/git/?p=jogl.git;&a=commit&h=ece5acb85b3dac22352aca75dd09aadcb96b43f3

Thanks to your regression check!

If I would have the log files - I can fix it.
Comment 13 Sven Gothel 2013-02-21 06:34:37 CET
Ok - Read the attached log file, problem understood.

The GMA driver provides GL 1.4, but on OSX we only tend to allow >= 2.0 to pass, will fix this.
Comment 14 Sven Gothel 2013-02-21 09:36:30 CET
Fixed .. simulated locally here hacking the code.

if bug still persists .. please reopen .. you know the drill.
Comment 15 Sven Gothel 2013-02-21 11:08:36 CET
See Bug 548 comment 6:

http://jogamp.org/git/?p=jogl.git;a=commit;h=ffcf0cb5beaf3c7c363d45cef0b9d18dcf3f50c6

Added GLRendererQuirk for this OSX < 10.7.3 NVIDIA glFLush case
Comment 16 ac 2013-02-22 00:28:09 CET
(In reply to comment #14)
> Fixed .. simulated locally here hacking the code.
> 
> if bug still persists .. please reopen .. you know the drill.

Just confirming that it now works again, thank you.
Comment 17 president 2013-02-28 17:22:18 CET
I can also confirm that it is fixed in my test computer.