Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8068810

In a multiple X display configuration, only one screen is rendered correctly.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P3 P3
    • 9
    • 8, 9
    • client-libs
    • x86_64
    • linux

      FULL PRODUCT VERSION :
      java version "1.8.0_25"
      Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
      Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      CentOS 7 ( Also verified on Redhat 7)
      centos 3.10.0-123.9.3.el7.x86_64


      EXTRA RELEVANT SYSTEM CONFIGURATION :
      Intel chipset (multiple verified)
      Nvidia graphics (multiple models verified)

      I'll take one specific example for the rest of the configuration:

      Nvidia graphics display driver : 340.58

      /etc/X11/xorg.conf file:
      Section "ServerLayout"
          Identifier "Default Layout"
          Screen 0 "Screen0" 0 0
          Screen 1 "Screen1" RightOf "Screen0"
          InputDevice "Keyboard0" "CoreKeyboard"
          InputDevice "Mouse0" "CorePointer"
          Option "Xinerama" "0"
      EndSection

      Section "InputDevice"

          # generated from default
          Identifier "Keyboard0"
          Driver "kbd"
      EndSection

      Section "InputDevice"

          # generated from default
          Identifier "Mouse0"
          Driver "mouse"
          Option "Protocol" "auto"
          Option "Device" "/dev/input/mice"
          Option "Emulate3Buttons" "no"
          Option "ZAxisMapping" "4 5"
      EndSection

      Section "Monitor"
          Identifier "Monitor0"
          VendorName "Unknown"
          ModelName "Sceptre E246W-1080P"
          HorizSync 29.0 - 81.0
          VertRefresh 55.0 - 76.0
      EndSection

      Section "Monitor"
          Identifier "Monitor1"
          VendorName "Unknown"
          ModelName "Sceptre E246W-1080P"
          HorizSync 29.0 - 81.0
          VertRefresh 55.0 - 76.0
      EndSection

      Section "Device"
          Identifier "Videocard0"
          Driver "nvidia"
      EndSection

      Section "Device"
          Identifier "Device0"
          Driver "nvidia"
          VendorName "NVIDIA Corporation"
          BoardName "GeForce GTX 560"
          BusID "PCI:7:0:0"
          Screen 0
      EndSection

      Section "Device"
          Identifier "Device1"
          Driver "nvidia"
          VendorName "NVIDIA Corporation"
          BoardName "GeForce GTX 560"
          BusID "PCI:7:0:0"
          Screen 1
      EndSection

      Section "Screen"
          Identifier "Default Screen"
          Device "Videocard0"
          Monitor "Monitor0"
      EndSection

      Section "Screen"

      # Removed Option "metamodes" "DVI-I-3: nvidia-auto-select +0+0"
          Identifier "Screen0"
          Device "Device0"
          Monitor "Monitor0"
          DefaultDepth 24
          SubSection "Display"
              Depth 24
          EndSubSection
      EndSection

      Section "Screen"

      # Removed Option "metamodes" "DVI-I-2: nvidia-auto-select +0+0"
          Identifier "Screen1"
          Device "Device1"
          Monitor "Monitor1"
          DefaultDepth 24
          SubSection "Display"
              Depth 24
          EndSubSection
      EndSection


      A DESCRIPTION OF THE PROBLEM :
      When running with two separate X displays (:0.0 and :0.1) on one system, Java only renders one screen correctly. It renders fine on one screen or the other, but not both simultaneously. I was only able to test it with a dual monitor setup, so I'm not sure would it would do with multiple displays.

      REGRESSION. Last worked in version 7u72

      ADDITIONAL REGRESSION INFORMATION:
      All versions of java 7 seem to work correctly. All versions of Java 8 seem to be broken.

      Here is a specific version of java 7 that I know works.
      java version "1.7.0_72"
      Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
      Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)


      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run the code snippet below, and verify that only one screen is being rendered properly. A window is being displayed, but there is not text and the coloring looks off.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      When running the code in previous versions of java we would get the same window rendered on both screens.
      ACTUAL -
      Only one screen renders properly.

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      import java.awt.GraphicsDevice;
      import java.awt.GraphicsEnvironment;

      import javax.swing.JButton;
      import javax.swing.JFrame;
      import javax.swing.JLabel;
      import javax.swing.JPanel;

      public class JFrameTest {

        public static void main(String[] args) {
          GraphicsDevice[] devs = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
          for (GraphicsDevice device : devs) {
            JFrame frame = new JFrame("My Test", device.getDefaultConfiguration());
            JPanel panel = new JPanel();
            panel.add(new JButton("THis is a test"));
            panel.add(new JLabel("This is a label"));
            frame.add(panel);
            frame.pack();
            frame.setVisible(true);
          }
        }
      }

      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      None found; except for using a previous version of java.

            ssadetsky Semyon Sadetsky (Inactive)
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: