United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6604044 java crashes talking to second X screen
JDK-6604044 : java crashes talking to second X screen

Details
Type:
Bug
Submit Date:
2007-09-12
Status:
Closed
Updated Date:
2011-03-07
Project Name:
JDK
Resolved Date:
2011-03-07
Component:
client-libs
OS:
linux,solaris_10,solaris_nevada
Sub-Component:
2d
CPU:
x86,sparc,generic
Priority:
P2
Resolution:
Fixed
Affected Versions:
solaris,solaris_11,4.2,5.0u12,6,6u1,6u3,6u4
Fixed Versions:

Related Reports
Backport:
Backport:
Duplicate:
Duplicate:
Duplicate:

Sub Tasks

Description
The vino-client java VNC client crashes when DISPLAY is set to the second head of my desktop:

rab@loris> cat `which vncviewer`
#!/bin/sh
exec java -jar /usr/share/gnome/vino/vino-client.jar ${1+"$@"}
rab@loris> DISPLAY=:0.1 vncviewer :0
java.lang.ArrayIndexOutOfBoundsException: 1
        at sun.awt.X11GraphicsEnvironment.getDefaultScreenDevice(X11GraphicsEnvironment.java:218)
        at java.awt.Window.init(Window.java:354)
        at java.awt.Window.<init>(Window.java:407)
        at java.awt.Frame.<init>(Frame.java:402)
        at java.awt.Frame.<init>(Frame.java:367)
        at vncviewer.Dialog.<init>(Dialog.java:34)
        at vncviewer.OptionsDialog.<init>(OptionsDialog.java:30)
        at vncviewer.CConn.<init>(CConn.java:95)
        at vncviewer.VNCViewer.run(VNCViewer.java:151)
        at java.lang.Thread.run(Thread.java:619)
Exception in thread "Thread-1" java.lang.ArrayIndexOutOfBoundsException: 1
        at sun.awt.X11GraphicsEnvironment.getDefaultScreenDevice(X11GraphicsEnvironment.java:218)
        at java.awt.Window.init(Window.java:354)
        at java.awt.Window.<init>(Window.java:407)
        at java.awt.Frame.<init>(Frame.java:402)
        at java.awt.Frame.<init>(Frame.java:367)
        at vncviewer.Dialog.<init>(Dialog.java:34)
        at vncviewer.MessageBox.<init>(MessageBox.java:30)
        at vncviewer.MessageBox.<init>(MessageBox.java:61)
        at vncviewer.VNCViewer.run(VNCViewer.java:163)
        at java.lang.Thread.run(Thread.java:619)
rab@loris> 

But it works when DISPLAY is set to the first screen:

rab@loris> DISPLAY=:0.0 vncviewer :0 
Java Accessibility Bridge for GNOME loaded.

CConn: connected to host localhost port 5900
CConnection: Server supports RFB protocol version 3.3
CConnection: Using RFB protocol version 3.3
CConn: Using pixel format depth 24 (32bpp) big-endian rgb888
CConn: Using ZRLE encoding
<it works>

                                    

Comments
WORK AROUND

Use the first screen of your X server.
                                     
2007-09-12
EVALUATION

Setup dual monitor envrionment both on sparc and x86, could not reproduce this bug.
Attach my x86 xorg.conf for your referrence.
                                     
2007-09-13
EVALUATION

Halton,

You're using xinerama. Try turning that off. Then try running a java app with DISPLAY set to :0.1
                                     
2008-03-25
EVALUATION

I have successfully tested the fix on Linux and (with help from
interested parties) on solaris.

The fix is to check if the number of screens reported by 
XineramaGetInfo is greater than reported by XScreenCount and
only enable xinerama support if that's the case.
                                     
2008-03-27
SUGGESTED FIX

http://sa.sfbay.sun.com/projects/java2d_data/7/6604044.0
                                     
2008-05-14



Hardware and Software, Engineered to Work Together