JDK-6458746 : OGL: mustang b94 doesn't work correctly with JDialog (Nvidia, 91.31, Windows)
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 6
  • Priority: P3
  • Status: Closed
  • Resolution: Not an Issue
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2006-08-10
  • Updated: 2010-04-02
  • Resolved: 2006-08-15
Description
FULL PRODUCT VERSION :
java version "1.6.0-rc"
Java(TM) SE Runtime Environment (build 1.6.0-rc-b94)
Java HotSpot(TM) Client VM (build 1.6.0-rc-b94, mixed mode, sharing)

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [version 5.1.2600]

EXTRA RELEVANT SYSTEM CONFIGURATION :
nvidia driver 91.31

A DESCRIPTION OF THE PROBLEM :
When activating the opengl pipeline (-Dsun.java2d.opengl=true) in mustang b94 the login dialog (JDialog) of my app is not correctly displayed.

In fact the content pane of the dialog is not displayed (dialog decoration is correctly displayed) and components on content pane continu to work (i.e. Mouse cursor changing into caret over JFieldText, JButton reacting to mouse click).

When resizing the dialog the program terminates with:
Java Result: -1073741819

When the opengl pipeline is not activate everything works correctly.
This code worked correctly with mustang b86 (nvidia driver 84.21) and opengl pipeline activated.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run the provided example with -Dsun.java2d.opengl=true.

The example creates a simple JDialog containing a JButton.
When clicking on the button it should display "click" in the console.
When resizing the dialog, windows kills the app and reports a bug.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I expect to see a correctly displayed JDialog on the top left corner of the screen with a JButton on it  and being able to resize to dialog wihout windows reporting for a bug.

ACTUAL -
Actually the content of the JDialog is not displayed at all (transparent behavior).
And resizing the dialog kills the app with Windows reporting a bug.

ERROR MESSAGES/STACK TRACES THAT OCCUR :
there no jvm crash. Windows reports a bug and kills the app with return code -1073741819.

REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
package javaapplication1;

import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;

public class Main {
	public Main() {
		LoginDialog dialog = new LoginDialog();
		dialog.pack();
		dialog.setVisible(true);
	}

	public static void main(String[] args) {
		new Main();
	}
	
	public class LoginDialog extends javax.swing.JDialog {
		public LoginDialog() {
			super((Frame)null, false);
			JButton button = new JButton();
			add(button);
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					System.out.println("click");
				}
			});
		}
	}
}
---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
I didn't found any bypassing method.

Comments
EVALUATION Nvidia has fixed driver issue 242459 (mentioned above) in their nv95 series drivers (96.60 or later). We will verify their fix once a beta driver is available.
11-09-2006

WORK AROUND Until a driver fix is available from Nvidia, you can work around this bug by passing the following system property on the command line: -Dsun.java2d.opengl.fbobject=false
15-08-2006

EVALUATION The submitter provided an update saying the board is an Nvidia GeForce 6600GT, and that passing -Dsun.java2d.opengl.fbobject=false on the command line makes the problem go away. This confirms that the problem is indeed caused by the Nvidia driver bug mentioned previously. It is unfortunate that this driver regression was introduced at the same time that we enabled the FBO codepath by default, but other than using the user workaround described earlier, there's no simple way to work around the problem in the JDK code, so it is best to wait for a driver update from Nvidia. Closing as "not a JDK bug" for now, but I will update this bug report shortly once I find out in which Nvidia release this driver bug will be fixed.
15-08-2006

EVALUATION This is almost certainly caused by a recent regression in Nvidia's Windows drivers related to our FBO codepath (which was enabled by default in b92). A bug report was filed a couple weeks back with Nvidia regarding this issue and they have been investigating it: 242459: Java apps stop rendering (or crash) when FBO codepath enabled (91.33, Windows) If this is indeed the same problem the submitter is seeing, it should be possible to work around the problem by specifying -Dsun.java2d.opengl.fbobject=false on the command line. But I will need to know which board the submitter is using to be entirely certain that this is the same problem.
11-08-2006