-
Bug
-
Resolution: Cannot Reproduce
-
P4
-
None
-
1.2.2
-
x86, sparc
-
solaris_2.6, solaris_8
ing args[])
{
PUI pui = new PUI();
String lookAndFeel = "default";
if (args.length == 1)
{
lookAndFeel = args[0];
}
pui.doScreen(lookAndFeel);
}
(Review ID: 107916)
======================================================================
Name: ks88420 Date: 09/07/2000
java version "1.2.2"
Solaris VM (build Solaris_JDK_1.2.2_05a, native threads, sunwjit)
To produce the problem, I just have to execute a simple awt based program. The
same could be done just executing the appletviewer. I've removed all PATH,
CLASSPATH, LD_LIBRARY_PATH, and JAVA_HOME variables, and even installed the JDK
in a different directory with no avail. I've looked for a patch that might fix
this but none seem to address it. The display is going to a remote PC running
Exceed x-emulation. I've also had the same results with X-Win32. From the
console, displayed output does not segmenentation fault but the display is
turned black and must continually be refreshed to be seen. The source code is a
follows:
import java.awt.*;
public class Frame1 extends Frame
{
public Frame1()
{
setLayout(null);
setSize(405,305);
setVisible(false);
setTitle("AWT Application");
}
public Frame1(String title)
{
this();
setTitle(title);
}
public void setVisible(boolean b)
{
if(b)
{
setLocation(50, 50);
}
super.setVisible(b);
}
static public void main(String args[])
{
try
{
(new Frame1()).setVisible(true);
}
catch (Throwable t)
{
System.err.println(t);
t.printStackTrace();
System.exit(1);
}
}
public void addNotify()
{
Dimension d = getSize();
super.addNotify();
if (fComponentsAdjusted)
return;
setSize(getInsets().left + getInsets().right + d.width,
getInsets().top + getInsets().bottom + d.height);
Component components[] = getComponents();
for (int i = 0; i < components.length; i++)
{
Point p = components[i].getLocation();
p.translate(getInsets().left, getInsets().top);
components[i].setLocation(p);
}
fComponentsAdjusted = true;
}
boolean fComponentsAdjusted = false;
}
The output looks like this:
SIGSEGV 11 segmentation violation
si_signo [11]: SEGV
si_errno [0]:
si_code [1]: SEGV_MAPERR [addr: 0x0]
stackpointer=E9CF0090
"Screen Updater" (TID:0x4911b0, sys_thread_t:0x4910e8, state:CW, thread_t:
t@14, threadID:0xe9c61dd8, stack_bottom:0xe9c62000, stack_size:0x20000) prio=4
[1] java.lang.Object.wait(Object.java:424)
[2] sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:78)
[3] sun.awt.ScreenUpdater.run(ScreenUpdater.java:98)
-------------------
"Thread-1" (TID:0x17da48, sys_thread_t:0x17d980, state:MW, thread_t: t@1,
threadID:0x25118, stack_bottom:0xf0000000, stack_size:0x800000) prio=5
-------------------
"AWT-Motif" (TID:0x42b648, sys_thread_t:0x42b580, state:MW, thread_t: t@13,
threadID:0xe9c91dd8, stack_bottom:0xe9c92000, stack_size:0x20000) prio=5
[1] sun.awt.motif.MToolkit.run(Native Method)
[2] java.lang.Thread.run(Thread.java:479)
-------------------
"SunToolkit.PostEventQueue-0" (TID:0x40b5f8, sys_thread_t:0x40b530, state:CW,
thread_t: t@12, threadID:0xe9cc1dd8, stack_bottom:0xe9cc2000,
stack_size:0x20000) prio=5
[1] java.lang.Object.wait(Object.java:424)
[2] sun.awt.PostEventQueue.run(SunToolkit.java:407)
-------------------
"AWT-EventQueue-0" (TID:0x405690, sys_thread_t:0x4055c8, state:R, thread_t:
t@11, threadID:0xe9cf1dd8, stack_bottom:0xe9cf2000, stack_size:0x20000) prio=6
*current thread*
[1] sun.awt.motif.X11Graphics.cacheInit(Native Method)
[2] sun.awt.motif.X11Graphics.<clinit>(X11Graphics.java:105)
[3] sun.awt.motif.MComponentPeer.getGraphics(MComponentPeer.java:349)
[4] java.awt.Component.getGraphics(Component.java:1700)
[5] sun.awt.motif.MComponentPeer.handleEvent(MComponentPeer.java:316)
[6] java.awt.Component.dispatchEventImpl(Component.java:2452)
[7] java.awt.Container.dispatchEventImpl(Container.java:1061)
[8] java.awt.Window.dispatchEventImpl(Window.java:749)
[9] java.awt.Component.dispatchEvent(Component.java:2312)
[10] java.awt.EventQueue.dispatchEvent(EventQueue.java:301)
[11] java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:101)
[12] java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:91)
[13] java.awt.EventDispatchThread.run(EventDispatchThread.java:83)
-------------------
-------------------
Exiting Thread (sys_thread_t:0xef70c2e8) : no stack
Exiting Thread (sys_thread_t:0x2e8240) : no stack
Exiting Thread (sys_thread_t:0x2e8028) : no stack
Exiting Thread (sys_thread_t:0x2e7e10) : no stack
"Finalizer" (TID:0x156e80, sys_thread_t:0x156db8, state:CW, thread_t: t@6,
threadID:0xef0d1dd8, stack_bottom:0xef0d2000, stack_size:0x20000) prio=8
[1] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:146)
[2] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:168)
[3] java.lang.ref.Finalizer$FinalizerWorker$FinalizerThread.run
(Finalizer.java:124)
-------------------
"Reference Handler" (TID:0x14faa0, sys_thread_t:0x14f9d8, state:CW, thread_t:
t@5, threadID:0xef101dd8, stack_bottom:0xef102000, stack_size:0x20000) prio=10
[1] java.lang.Object.wait(Object.java:424)
[2] java.lang.ref.Reference$ReferenceHandler.run(Reference.java:130)
-------------------
"Signal dispatcher" (TID:0x12ba90, sys_thread_t:0x12b9c8, state:MW, thread_t:
t@4, threadID:0xef141dd8, stack_bottom:0xef142000, stack_size:0x20000) prio=10
-------------------
Abort(coredump)
(Review ID: 109356)
======================================================================
Name: rlT66838 Date: 05/30/2000
java version "1.2.2"
Solaris VM (build Solaris_JDK_1.2.2_05a, native threads, sunwjit)
This appears to be a regression of bug 4219633 (duplicate of 4219215, closed).
I am building a simple JComboBox. The attached code is simplified from
the Java Tutorial example ComboBoxDemo.java. This code causes a SEGV.
The SEGV is hard to reproduce -- happens only about one time out of ten.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Combo extends JPanel
{
public static void main( String s[])
{
// Create the frame.
JFrame frame = new JFrame( "Combo" );
frame.addWindowListener( new WindowAdapter()
{ public void windowClosing( WindowEvent e )
{ System.exit( 0 );
}
});
// Create the combo box.
String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" };
JComboBox petList = new JComboBox( petStrings );
// petList.setEditable( true );
frame.getContentPane().add( petList );
// Show the frame.
frame.pack();
frame.setVisible( true );
}
}
The SEGV traceback varies but is usually like the following:
> java Combo
SIGSEGV 11 segmentation violation
si_signo [11]: SEGV
si_errno [0]:
si_code [1]: SEGV_MAPERR [addr: 0x34]
stackpointer=EAAEFAA0
"Screen Updater" (TID:0x6ff550, sys_thread_t:0x6ff490, state:CW, thread_t: t@11,
threadID:0xe9dc1dd8, stack_bottom:0xe9dc2000, stack_size:0x20000) prio=4
[1] java.lang.Object.wait(Object.java:424)
[2] sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:78)
[3] sun.awt.ScreenUpdater.run(ScreenUpdater.java:98)
-------------------
Exiting Thread (sys_thread_t:0xef6ef2d8) : no stack
"AWT-Motif" (TID:0x42aeb8, sys_thread_t:0x42adf8, state:R, thread_t: t@9,
threadID:0xe9ff1dd8, stack_bottom:0xe9ff2000, stack_size:0x20000) prio=5
[1] sun.awt.motif.MToolkit.run(Native Method)
[2] java.lang.Thread.run(Thread.java:479)
-------------------
"SunToolkit.PostEventQueue-0" (TID:0x4065e8, sys_thread_t:0x406528, state:CW,
thread_t: t@8, threadID:0xeaac1dd8, stack_bottom:0xeaac2000, stack_size:0x20000)
prio=5
[1] java.lang.Object.wait(Object.java:424)
[2] sun.awt.PostEventQueue.run(SunToolkit.java:407)
-------------------
"AWT-EventQueue-0" (TID:0x3e9a30, sys_thread_t:0x3e9970, state:R, thread_t: t@7,
threadID:0xeaaf1dd8, stack_bottom:0xeaaf2000, stack_size:0x20000) prio=6
*current thread*
[1] sun.awt.motif.X11Graphics.X11LockViewResources(Native Method)
[2] sun.awt.motif.X11Graphics.lock(X11Graphics.java:847)
[3] sun.java2d.loops.LockableRaster.<init>(LockableRaster.java:91)
[4]
sun.java2d.loops.RasterOutputManager$RenderImageCachedState.getDstLR(RasterOutputManager.java:368)
[5]
sun.java2d.loops.RasterOutputManager.renderImage(RasterOutputManager.java:479)
[6] sun.java2d.SunGraphics2D.renderingPipeImage(SunGraphics2D.java:2024)
[7] sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:1633)
[8] sun.awt.motif.X11Graphics.drawImage(X11Graphics.java:591)
[9] javax.swing.JComponent.paint(JComponent.java:548)
[10] java.awt.Container.paint(Container.java:759)
[11] javax.swing.JFrame.update(JFrame.java:261)
[12] sun.awt.motif.MComponentPeer.handleEvent(MComponentPeer.java:324)
[13] java.awt.Component.dispatchEventImpl(Component.java:2452)
[14] java.awt.Container.dispatchEventImpl(Container.java:1061)
[15] java.awt.Window.dispatchEventImpl(Window.java:749)
[16] java.awt.Component.dispatchEvent(Component.java:2312)
[17] java.awt.EventQueue.dispatchEvent(EventQueue.java:296)
[18] java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:100)
[19] java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:91)
[20] java.awt.EventDispatchThread.run(EventDispatchThread.java:83)
-------------------
"Finalizer" (TID:0x151a88, sys_thread_t:0x1519c8, state:CW, thread_t: t@6,
threadID:0xef0f1dd8, stack_bottom:0xef0f2000, stack_size:0x20000) prio=8
[1] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:146)
[2] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:168)
[3]
java.lang.ref.Finalizer$FinalizerWorker$FinalizerThread.run(Finalizer.java:124)
-------------------
"Reference Handler" (TID:0x14f698, sys_thread_t:0x14f5d8, state:CW, thread_t:
t@5, threadID:0xef131dd8, stack_bottom:0xef132000, stack_size:0x20000) prio=10
[1] java.lang.Object.wait(Object.java:424)
[2] java.lang.ref.Reference$ReferenceHandler.run(Reference.java:130)
-------------------
"Signal dispatcher" (TID:0x130d78, sys_thread_t:0x130cb8, state:MW, thread_t:
t@4, threadID:0xef161dd8, stack_bottom:0xef162000, stack_size:0x20000) prio=10
-------------------
"main" (TID:0x387e8, sys_thread_t:0x38728, state:R, thread_t: t@1,
threadID:0x25118, stack_bottom:0xf0000000, stack_size:0x20000) prio=5
[1] java.awt.Component.show(Component.java:806)
[2] java.awt.Window.show(Window.java:289)
[3] java.awt.Component.show(Component.java:835)
[4] java.awt.Component.setVisible(Component.java:797)
[5] Combo.main(Combo.java:25)
-------------------
Abort
(Review ID: 105492)
======================================================================
Name: ks88420 Date: 08/24/2000
java version "1.2.2" Solaris VM (build
Solaris_JDK_1.2.2_05, native threads, sunwjit)
The program is crashing in the UIManager.setLookAndFeel()
call with the following output:
> java polos.PUI motif
==> using MOTIF Look&Feel
SIGSEGV 11 segmentation violation
si_signo [11]: SEGV
si_errno [0]:
si_code [1]: SEGV_MAPERR [addr: 0x70616d7c]
stackpointer=8045834
"Finalizer" (TID:0x816d56c, sys_thread_t:0x816d4b8, state:CW, thread_t: t@6,
threadID:0xdeb70d74,
stack_bottom:0xdeb71000, stack_size:0x20000) prio=8
[1] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:146)
[2] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:168)
[3] java.lang.ref.Finalizer$FinalizerWorker$FinalizerThread.run
(Finalizer.java:124)
-------------------
"Reference Handler" (TID:0x816b58c, sys_thread_t:0x816b4d8, state:CW, thread_t:
t@5,
threadID:0xdeba0d74, stack_bottom:0xdeba1000, stack_size:0x20000) prio=10
[1] java.lang.Object.wait(Object.java:424)
[2] java.lang.ref.Reference$ReferenceHandler.run(Reference.java:130)
-------------------
"Signal dispatcher" (TID:0x814fa6c, sys_thread_t:0x814f9b8, state:MW, thread_t:
t@4,
threadID:0xdebf0d74, stack_bottom:0xdebf1000, stack_size:0x20000) prio=10
-------------------
"main" (TID:0x805f63c, sys_thread_t:0x805f588, state:R, thread_t: t@1,
threadID:0x804c058,
stack_bottom:0x8048000, stack_size:0x20000) prio=5 *current thread*
[1] sun.awt.X11GraphicsEnvironment.initCompositeFonts
(X11GraphicsEnvironment.java:436)
[2] sun.java2d.SunGraphicsEnvironment$1.run(SunGraphicsEnvironment.java:85)
[3] java.security.AccessController.doPrivileged(Native Method)
[4] sun.java2d.SunGraphicsEnvironment.<init>(SunGraphicsEnvironment.java:73)
[5] sun.awt.X11GraphicsEnvironment.<init>(X11GraphicsEnvironment.java:68)
[6] java.lang.Class.newInstance0(Native Method)
[7] java.lang.Class.newInstance(Class.java:238)
[8] java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment
(GraphicsEnvironment.java:63)
[9] java.awt.Font.initializeFont(Font.java:262)
[10] java.awt.Font.<init>(Font.java:292)
[11] javax.swing.plaf.FontUIResource.<init>(FontUIResource.java:41)
[12] javax.swing.plaf.basic.BasicLookAndFeel.initComponentDefaults
(BasicLookAndFeel.java:223)
[13] com.sun.java.swing.plaf.motif.MotifLookAndFeel.initComponentDefaults
(MotifLookAndFeel.java:185)
[14] javax.swing.plaf.basic.BasicLookAndFeel.getDefaults
(BasicLookAndFeel.java:65)
[15] javax.swing.UIManager.setLookAndFeel(UIManager.java:363)
[16] polos.PUI.doScreen(PUI.java:52)
[17] polos.PUI.main(PUI.java:117)
-------------------
Abort (core dumped)
When no LookAndFeel is specified, the program crashes with
the following output: (no core dump, must hit ^C to end)
> java polos.PUI
==> using DEFAULT Look&Feel
Done setting Look&Feel
SIGSEGV 11 segmentation violation
si_signo [11]: SEGV
si_errno [0]:
si_code [1]: SEGV_MAPERR [addr: 0x31582f35]
stackpointer=804615C
"Finalizer" (TID:0x81725cc, sys_thread_t:0x8172518, state:CW, thread_t: t@6,
threadID:0xdeb70d74,
stack_bottom:0xdeb71000, stack_size:0x20000) prio=8
The attached Java program runs fine on Solaris 2.8 with java 1.2.2 but crashes
on the intel solaris 2.8 with java 1.2.2
PFrame.java (3KB)
package polos;
// Java imports
import java.io.FileInputStream;
// Java AWT imports
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.Container;
import java.awt.Image;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
// Java swing imports
import javax.swing.JScrollPane;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JTextArea;
public class PFrame extends JFrame
{
// attributes
private Container m_contentPane;
private JPanel m_controlPanel;
private JPanel m_buttonPanel;
public PFrame()
{
setSize(600,400);
setTitle("PFrame Title Bar");
m_contentPane = getContentPane();
m_contentPane.setLayout(new BorderLayout());
m_buttonPanel = new JPanel();
m_controlPanel = new JPanel();
//m_controlPanel.setLayout(new BorderLayout());
}
/**
* doPage
* Creates, displays, and supports the GUI Page
*
* @param none
* @return nothing
*/
public void doPage()
{
/* add the control panel */
m_contentPane.add(m_controlPanel, BorderLayout.CENTER);
/* add the button panel to the main frame */
m_contentPane.add(m_buttonPanel, BorderLayout.SOUTH);
/* center on frame on screen. */
centerOnScreen(this);
/* show the frame */
pack();
setVisible(true);
}
public void addIconImage(String gif)
{
java.net.URL loc = this.getClass().getResource(gif);
ImageIcon icFrame = new ImageIcon(loc);
this.setIconImage(icFrame.getImage());
}
public void addText(String txtToDisplay, boolean isFile)
{
String txt;
JPanel controlPanel;
JTextArea textArea;
JScrollPane scrollPane;
if (isFile)
{
txt = getTextFromFile(txtToDisplay);
}
else
{
txt = txtToDisplay;
}
textArea = new JTextArea(txt)
{
public boolean isFocusTraversable()
{
return false;
}
};
textArea.setBackground(getBackground());
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
textArea.setEditable(false);
scrollPane = new JScrollPane(textArea);
scrollPane.setPreferredSize(new Dimension(575,375));
m_controlPanel.removeAll();
m_controlPanel.add(scrollPane);
}
public void addButton(JButton button, boolean isDefault)
{
m_buttonPanel.add(button);
if (isDefault)
{
rootPane.setDefaultButton(button);
button.grabFocus();
}
}
private String getTextFromFile(String file)
{
FileInputStream fis;
byte[] data = new byte[1024];
String txt = "";
int rc;
try
{
fis = new FileInputStream(file);
while ((rc = fis.read(data)) != -1)
{
txt += new String(data,0,rc);
}
}
catch (Exception e)
{
txt = "Could not read data from file: " + file;
}
return txt;
}
/**
* center the window on the screen
*/
private static void centerOnScreen(JFrame frame)
{
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
Dimension window = frame.getSize();
int iCenterX = screen.width / 2;
int iCenterY = screen.height / 2;
frame.setLocation(iCenterX - (window.width / 2),
iCenterY - (window.height / 2));
}
} // end GUIHelp class
PUI.java (3Kb)
package polos;
// Java imports
import java.io.*;
import java.util.*;
import java.lang.System;
// Java AWT imports
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
// Java swing imports
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.UIManager;
// Java com.sun imports
import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;
import com.sun.java.swing.plaf.motif.MotifLookAndFeel;
import javax.swing.plaf.metal.MetalLookAndFeel;
// Other imports
import polos.PFrame;
public class PUI implements ActionListener
{
// constants
static public final int EXIT = -1;
static public final int CANCEL = 0;
// attributes
PFrame pFrame = null;
public PUI()
{
}
public void doScreen(String lookAndFeel)
{
try
{
if (lookAndFeel.toLowerCase().equals("windows"))
{
System.out.println("==> using WINDOWS Look&Feel");
UIManager.setLookAndFeel(new WindowsLookAndFeel());
}
else if (lookAndFeel.toLowerCase().equals("motif"))
{
System.out.println("==> using MOTIF Look&Feel");
UIManager.setLookAndFeel(new MotifLookAndFeel());
}
else if (lookAndFeel.toLowerCase().equals("metal"))
{
System.out.println("==> using METAL Look&Feel");
UIManager.setLookAndFeel(new MetalLookAndFeel());
}
else
{
System.out.println("==> using DEFAULT Look&Feel");
}
}
catch (Exception e)
{
System.out.println("PUI-caught exception: " + e.getMessage());
}
System.out.println("Done setting Look&Feel");
createPFrame();
pFrame.doPage();
}
private void createPFrame()
{
// instanstiate a PFrame
pFrame = new PFrame();
// Create the exit button
JButton exit = new JButton("EXIT");
exit.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent actionEvent)
{
pFrame.dispose();
System.exit(0);
}
}
);
pFrame.addButton(exit,true);
// Create the text field
pFrame.addText("TestFile",true);
// Add the icon image
pFrame.addIconImage("/com/basis/install/gui/BBjReg.gif");
}
public void actionPerformed(ActionEvent actionEvent)
{
/* get the src of the action event */
Object src = actionEvent.getSource();
}
public static void main(Str
{
PUI pui = new PUI();
String lookAndFeel = "default";
if (args.length == 1)
{
lookAndFeel = args[0];
}
pui.doScreen(lookAndFeel);
}
(Review ID: 107916)
======================================================================
Name: ks88420 Date: 09/07/2000
java version "1.2.2"
Solaris VM (build Solaris_JDK_1.2.2_05a, native threads, sunwjit)
To produce the problem, I just have to execute a simple awt based program. The
same could be done just executing the appletviewer. I've removed all PATH,
CLASSPATH, LD_LIBRARY_PATH, and JAVA_HOME variables, and even installed the JDK
in a different directory with no avail. I've looked for a patch that might fix
this but none seem to address it. The display is going to a remote PC running
Exceed x-emulation. I've also had the same results with X-Win32. From the
console, displayed output does not segmenentation fault but the display is
turned black and must continually be refreshed to be seen. The source code is a
follows:
import java.awt.*;
public class Frame1 extends Frame
{
public Frame1()
{
setLayout(null);
setSize(405,305);
setVisible(false);
setTitle("AWT Application");
}
public Frame1(String title)
{
this();
setTitle(title);
}
public void setVisible(boolean b)
{
if(b)
{
setLocation(50, 50);
}
super.setVisible(b);
}
static public void main(String args[])
{
try
{
(new Frame1()).setVisible(true);
}
catch (Throwable t)
{
System.err.println(t);
t.printStackTrace();
System.exit(1);
}
}
public void addNotify()
{
Dimension d = getSize();
super.addNotify();
if (fComponentsAdjusted)
return;
setSize(getInsets().left + getInsets().right + d.width,
getInsets().top + getInsets().bottom + d.height);
Component components[] = getComponents();
for (int i = 0; i < components.length; i++)
{
Point p = components[i].getLocation();
p.translate(getInsets().left, getInsets().top);
components[i].setLocation(p);
}
fComponentsAdjusted = true;
}
boolean fComponentsAdjusted = false;
}
The output looks like this:
SIGSEGV 11 segmentation violation
si_signo [11]: SEGV
si_errno [0]:
si_code [1]: SEGV_MAPERR [addr: 0x0]
stackpointer=E9CF0090
"Screen Updater" (TID:0x4911b0, sys_thread_t:0x4910e8, state:CW, thread_t:
t@14, threadID:0xe9c61dd8, stack_bottom:0xe9c62000, stack_size:0x20000) prio=4
[1] java.lang.Object.wait(Object.java:424)
[2] sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:78)
[3] sun.awt.ScreenUpdater.run(ScreenUpdater.java:98)
-------------------
"Thread-1" (TID:0x17da48, sys_thread_t:0x17d980, state:MW, thread_t: t@1,
threadID:0x25118, stack_bottom:0xf0000000, stack_size:0x800000) prio=5
-------------------
"AWT-Motif" (TID:0x42b648, sys_thread_t:0x42b580, state:MW, thread_t: t@13,
threadID:0xe9c91dd8, stack_bottom:0xe9c92000, stack_size:0x20000) prio=5
[1] sun.awt.motif.MToolkit.run(Native Method)
[2] java.lang.Thread.run(Thread.java:479)
-------------------
"SunToolkit.PostEventQueue-0" (TID:0x40b5f8, sys_thread_t:0x40b530, state:CW,
thread_t: t@12, threadID:0xe9cc1dd8, stack_bottom:0xe9cc2000,
stack_size:0x20000) prio=5
[1] java.lang.Object.wait(Object.java:424)
[2] sun.awt.PostEventQueue.run(SunToolkit.java:407)
-------------------
"AWT-EventQueue-0" (TID:0x405690, sys_thread_t:0x4055c8, state:R, thread_t:
t@11, threadID:0xe9cf1dd8, stack_bottom:0xe9cf2000, stack_size:0x20000) prio=6
*current thread*
[1] sun.awt.motif.X11Graphics.cacheInit(Native Method)
[2] sun.awt.motif.X11Graphics.<clinit>(X11Graphics.java:105)
[3] sun.awt.motif.MComponentPeer.getGraphics(MComponentPeer.java:349)
[4] java.awt.Component.getGraphics(Component.java:1700)
[5] sun.awt.motif.MComponentPeer.handleEvent(MComponentPeer.java:316)
[6] java.awt.Component.dispatchEventImpl(Component.java:2452)
[7] java.awt.Container.dispatchEventImpl(Container.java:1061)
[8] java.awt.Window.dispatchEventImpl(Window.java:749)
[9] java.awt.Component.dispatchEvent(Component.java:2312)
[10] java.awt.EventQueue.dispatchEvent(EventQueue.java:301)
[11] java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:101)
[12] java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:91)
[13] java.awt.EventDispatchThread.run(EventDispatchThread.java:83)
-------------------
-------------------
Exiting Thread (sys_thread_t:0xef70c2e8) : no stack
Exiting Thread (sys_thread_t:0x2e8240) : no stack
Exiting Thread (sys_thread_t:0x2e8028) : no stack
Exiting Thread (sys_thread_t:0x2e7e10) : no stack
"Finalizer" (TID:0x156e80, sys_thread_t:0x156db8, state:CW, thread_t: t@6,
threadID:0xef0d1dd8, stack_bottom:0xef0d2000, stack_size:0x20000) prio=8
[1] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:146)
[2] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:168)
[3] java.lang.ref.Finalizer$FinalizerWorker$FinalizerThread.run
(Finalizer.java:124)
-------------------
"Reference Handler" (TID:0x14faa0, sys_thread_t:0x14f9d8, state:CW, thread_t:
t@5, threadID:0xef101dd8, stack_bottom:0xef102000, stack_size:0x20000) prio=10
[1] java.lang.Object.wait(Object.java:424)
[2] java.lang.ref.Reference$ReferenceHandler.run(Reference.java:130)
-------------------
"Signal dispatcher" (TID:0x12ba90, sys_thread_t:0x12b9c8, state:MW, thread_t:
t@4, threadID:0xef141dd8, stack_bottom:0xef142000, stack_size:0x20000) prio=10
-------------------
Abort(coredump)
(Review ID: 109356)
======================================================================
Name: rlT66838 Date: 05/30/2000
java version "1.2.2"
Solaris VM (build Solaris_JDK_1.2.2_05a, native threads, sunwjit)
This appears to be a regression of bug 4219633 (duplicate of 4219215, closed).
I am building a simple JComboBox. The attached code is simplified from
the Java Tutorial example ComboBoxDemo.java. This code causes a SEGV.
The SEGV is hard to reproduce -- happens only about one time out of ten.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Combo extends JPanel
{
public static void main( String s[])
{
// Create the frame.
JFrame frame = new JFrame( "Combo" );
frame.addWindowListener( new WindowAdapter()
{ public void windowClosing( WindowEvent e )
{ System.exit( 0 );
}
});
// Create the combo box.
String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" };
JComboBox petList = new JComboBox( petStrings );
// petList.setEditable( true );
frame.getContentPane().add( petList );
// Show the frame.
frame.pack();
frame.setVisible( true );
}
}
The SEGV traceback varies but is usually like the following:
> java Combo
SIGSEGV 11 segmentation violation
si_signo [11]: SEGV
si_errno [0]:
si_code [1]: SEGV_MAPERR [addr: 0x34]
stackpointer=EAAEFAA0
"Screen Updater" (TID:0x6ff550, sys_thread_t:0x6ff490, state:CW, thread_t: t@11,
threadID:0xe9dc1dd8, stack_bottom:0xe9dc2000, stack_size:0x20000) prio=4
[1] java.lang.Object.wait(Object.java:424)
[2] sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:78)
[3] sun.awt.ScreenUpdater.run(ScreenUpdater.java:98)
-------------------
Exiting Thread (sys_thread_t:0xef6ef2d8) : no stack
"AWT-Motif" (TID:0x42aeb8, sys_thread_t:0x42adf8, state:R, thread_t: t@9,
threadID:0xe9ff1dd8, stack_bottom:0xe9ff2000, stack_size:0x20000) prio=5
[1] sun.awt.motif.MToolkit.run(Native Method)
[2] java.lang.Thread.run(Thread.java:479)
-------------------
"SunToolkit.PostEventQueue-0" (TID:0x4065e8, sys_thread_t:0x406528, state:CW,
thread_t: t@8, threadID:0xeaac1dd8, stack_bottom:0xeaac2000, stack_size:0x20000)
prio=5
[1] java.lang.Object.wait(Object.java:424)
[2] sun.awt.PostEventQueue.run(SunToolkit.java:407)
-------------------
"AWT-EventQueue-0" (TID:0x3e9a30, sys_thread_t:0x3e9970, state:R, thread_t: t@7,
threadID:0xeaaf1dd8, stack_bottom:0xeaaf2000, stack_size:0x20000) prio=6
*current thread*
[1] sun.awt.motif.X11Graphics.X11LockViewResources(Native Method)
[2] sun.awt.motif.X11Graphics.lock(X11Graphics.java:847)
[3] sun.java2d.loops.LockableRaster.<init>(LockableRaster.java:91)
[4]
sun.java2d.loops.RasterOutputManager$RenderImageCachedState.getDstLR(RasterOutputManager.java:368)
[5]
sun.java2d.loops.RasterOutputManager.renderImage(RasterOutputManager.java:479)
[6] sun.java2d.SunGraphics2D.renderingPipeImage(SunGraphics2D.java:2024)
[7] sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:1633)
[8] sun.awt.motif.X11Graphics.drawImage(X11Graphics.java:591)
[9] javax.swing.JComponent.paint(JComponent.java:548)
[10] java.awt.Container.paint(Container.java:759)
[11] javax.swing.JFrame.update(JFrame.java:261)
[12] sun.awt.motif.MComponentPeer.handleEvent(MComponentPeer.java:324)
[13] java.awt.Component.dispatchEventImpl(Component.java:2452)
[14] java.awt.Container.dispatchEventImpl(Container.java:1061)
[15] java.awt.Window.dispatchEventImpl(Window.java:749)
[16] java.awt.Component.dispatchEvent(Component.java:2312)
[17] java.awt.EventQueue.dispatchEvent(EventQueue.java:296)
[18] java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:100)
[19] java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:91)
[20] java.awt.EventDispatchThread.run(EventDispatchThread.java:83)
-------------------
"Finalizer" (TID:0x151a88, sys_thread_t:0x1519c8, state:CW, thread_t: t@6,
threadID:0xef0f1dd8, stack_bottom:0xef0f2000, stack_size:0x20000) prio=8
[1] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:146)
[2] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:168)
[3]
java.lang.ref.Finalizer$FinalizerWorker$FinalizerThread.run(Finalizer.java:124)
-------------------
"Reference Handler" (TID:0x14f698, sys_thread_t:0x14f5d8, state:CW, thread_t:
t@5, threadID:0xef131dd8, stack_bottom:0xef132000, stack_size:0x20000) prio=10
[1] java.lang.Object.wait(Object.java:424)
[2] java.lang.ref.Reference$ReferenceHandler.run(Reference.java:130)
-------------------
"Signal dispatcher" (TID:0x130d78, sys_thread_t:0x130cb8, state:MW, thread_t:
t@4, threadID:0xef161dd8, stack_bottom:0xef162000, stack_size:0x20000) prio=10
-------------------
"main" (TID:0x387e8, sys_thread_t:0x38728, state:R, thread_t: t@1,
threadID:0x25118, stack_bottom:0xf0000000, stack_size:0x20000) prio=5
[1] java.awt.Component.show(Component.java:806)
[2] java.awt.Window.show(Window.java:289)
[3] java.awt.Component.show(Component.java:835)
[4] java.awt.Component.setVisible(Component.java:797)
[5] Combo.main(Combo.java:25)
-------------------
Abort
(Review ID: 105492)
======================================================================
Name: ks88420 Date: 08/24/2000
java version "1.2.2" Solaris VM (build
Solaris_JDK_1.2.2_05, native threads, sunwjit)
The program is crashing in the UIManager.setLookAndFeel()
call with the following output:
> java polos.PUI motif
==> using MOTIF Look&Feel
SIGSEGV 11 segmentation violation
si_signo [11]: SEGV
si_errno [0]:
si_code [1]: SEGV_MAPERR [addr: 0x70616d7c]
stackpointer=8045834
"Finalizer" (TID:0x816d56c, sys_thread_t:0x816d4b8, state:CW, thread_t: t@6,
threadID:0xdeb70d74,
stack_bottom:0xdeb71000, stack_size:0x20000) prio=8
[1] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:146)
[2] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:168)
[3] java.lang.ref.Finalizer$FinalizerWorker$FinalizerThread.run
(Finalizer.java:124)
-------------------
"Reference Handler" (TID:0x816b58c, sys_thread_t:0x816b4d8, state:CW, thread_t:
t@5,
threadID:0xdeba0d74, stack_bottom:0xdeba1000, stack_size:0x20000) prio=10
[1] java.lang.Object.wait(Object.java:424)
[2] java.lang.ref.Reference$ReferenceHandler.run(Reference.java:130)
-------------------
"Signal dispatcher" (TID:0x814fa6c, sys_thread_t:0x814f9b8, state:MW, thread_t:
t@4,
threadID:0xdebf0d74, stack_bottom:0xdebf1000, stack_size:0x20000) prio=10
-------------------
"main" (TID:0x805f63c, sys_thread_t:0x805f588, state:R, thread_t: t@1,
threadID:0x804c058,
stack_bottom:0x8048000, stack_size:0x20000) prio=5 *current thread*
[1] sun.awt.X11GraphicsEnvironment.initCompositeFonts
(X11GraphicsEnvironment.java:436)
[2] sun.java2d.SunGraphicsEnvironment$1.run(SunGraphicsEnvironment.java:85)
[3] java.security.AccessController.doPrivileged(Native Method)
[4] sun.java2d.SunGraphicsEnvironment.<init>(SunGraphicsEnvironment.java:73)
[5] sun.awt.X11GraphicsEnvironment.<init>(X11GraphicsEnvironment.java:68)
[6] java.lang.Class.newInstance0(Native Method)
[7] java.lang.Class.newInstance(Class.java:238)
[8] java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment
(GraphicsEnvironment.java:63)
[9] java.awt.Font.initializeFont(Font.java:262)
[10] java.awt.Font.<init>(Font.java:292)
[11] javax.swing.plaf.FontUIResource.<init>(FontUIResource.java:41)
[12] javax.swing.plaf.basic.BasicLookAndFeel.initComponentDefaults
(BasicLookAndFeel.java:223)
[13] com.sun.java.swing.plaf.motif.MotifLookAndFeel.initComponentDefaults
(MotifLookAndFeel.java:185)
[14] javax.swing.plaf.basic.BasicLookAndFeel.getDefaults
(BasicLookAndFeel.java:65)
[15] javax.swing.UIManager.setLookAndFeel(UIManager.java:363)
[16] polos.PUI.doScreen(PUI.java:52)
[17] polos.PUI.main(PUI.java:117)
-------------------
Abort (core dumped)
When no LookAndFeel is specified, the program crashes with
the following output: (no core dump, must hit ^C to end)
> java polos.PUI
==> using DEFAULT Look&Feel
Done setting Look&Feel
SIGSEGV 11 segmentation violation
si_signo [11]: SEGV
si_errno [0]:
si_code [1]: SEGV_MAPERR [addr: 0x31582f35]
stackpointer=804615C
"Finalizer" (TID:0x81725cc, sys_thread_t:0x8172518, state:CW, thread_t: t@6,
threadID:0xdeb70d74,
stack_bottom:0xdeb71000, stack_size:0x20000) prio=8
The attached Java program runs fine on Solaris 2.8 with java 1.2.2 but crashes
on the intel solaris 2.8 with java 1.2.2
PFrame.java (3KB)
package polos;
// Java imports
import java.io.FileInputStream;
// Java AWT imports
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.Container;
import java.awt.Image;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
// Java swing imports
import javax.swing.JScrollPane;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JTextArea;
public class PFrame extends JFrame
{
// attributes
private Container m_contentPane;
private JPanel m_controlPanel;
private JPanel m_buttonPanel;
public PFrame()
{
setSize(600,400);
setTitle("PFrame Title Bar");
m_contentPane = getContentPane();
m_contentPane.setLayout(new BorderLayout());
m_buttonPanel = new JPanel();
m_controlPanel = new JPanel();
//m_controlPanel.setLayout(new BorderLayout());
}
/**
* doPage
* Creates, displays, and supports the GUI Page
*
* @param none
* @return nothing
*/
public void doPage()
{
/* add the control panel */
m_contentPane.add(m_controlPanel, BorderLayout.CENTER);
/* add the button panel to the main frame */
m_contentPane.add(m_buttonPanel, BorderLayout.SOUTH);
/* center on frame on screen. */
centerOnScreen(this);
/* show the frame */
pack();
setVisible(true);
}
public void addIconImage(String gif)
{
java.net.URL loc = this.getClass().getResource(gif);
ImageIcon icFrame = new ImageIcon(loc);
this.setIconImage(icFrame.getImage());
}
public void addText(String txtToDisplay, boolean isFile)
{
String txt;
JPanel controlPanel;
JTextArea textArea;
JScrollPane scrollPane;
if (isFile)
{
txt = getTextFromFile(txtToDisplay);
}
else
{
txt = txtToDisplay;
}
textArea = new JTextArea(txt)
{
public boolean isFocusTraversable()
{
return false;
}
};
textArea.setBackground(getBackground());
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
textArea.setEditable(false);
scrollPane = new JScrollPane(textArea);
scrollPane.setPreferredSize(new Dimension(575,375));
m_controlPanel.removeAll();
m_controlPanel.add(scrollPane);
}
public void addButton(JButton button, boolean isDefault)
{
m_buttonPanel.add(button);
if (isDefault)
{
rootPane.setDefaultButton(button);
button.grabFocus();
}
}
private String getTextFromFile(String file)
{
FileInputStream fis;
byte[] data = new byte[1024];
String txt = "";
int rc;
try
{
fis = new FileInputStream(file);
while ((rc = fis.read(data)) != -1)
{
txt += new String(data,0,rc);
}
}
catch (Exception e)
{
txt = "Could not read data from file: " + file;
}
return txt;
}
/**
* center the window on the screen
*/
private static void centerOnScreen(JFrame frame)
{
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
Dimension window = frame.getSize();
int iCenterX = screen.width / 2;
int iCenterY = screen.height / 2;
frame.setLocation(iCenterX - (window.width / 2),
iCenterY - (window.height / 2));
}
} // end GUIHelp class
PUI.java (3Kb)
package polos;
// Java imports
import java.io.*;
import java.util.*;
import java.lang.System;
// Java AWT imports
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
// Java swing imports
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.UIManager;
// Java com.sun imports
import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;
import com.sun.java.swing.plaf.motif.MotifLookAndFeel;
import javax.swing.plaf.metal.MetalLookAndFeel;
// Other imports
import polos.PFrame;
public class PUI implements ActionListener
{
// constants
static public final int EXIT = -1;
static public final int CANCEL = 0;
// attributes
PFrame pFrame = null;
public PUI()
{
}
public void doScreen(String lookAndFeel)
{
try
{
if (lookAndFeel.toLowerCase().equals("windows"))
{
System.out.println("==> using WINDOWS Look&Feel");
UIManager.setLookAndFeel(new WindowsLookAndFeel());
}
else if (lookAndFeel.toLowerCase().equals("motif"))
{
System.out.println("==> using MOTIF Look&Feel");
UIManager.setLookAndFeel(new MotifLookAndFeel());
}
else if (lookAndFeel.toLowerCase().equals("metal"))
{
System.out.println("==> using METAL Look&Feel");
UIManager.setLookAndFeel(new MetalLookAndFeel());
}
else
{
System.out.println("==> using DEFAULT Look&Feel");
}
}
catch (Exception e)
{
System.out.println("PUI-caught exception: " + e.getMessage());
}
System.out.println("Done setting Look&Feel");
createPFrame();
pFrame.doPage();
}
private void createPFrame()
{
// instanstiate a PFrame
pFrame = new PFrame();
// Create the exit button
JButton exit = new JButton("EXIT");
exit.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent actionEvent)
{
pFrame.dispose();
System.exit(0);
}
}
);
pFrame.addButton(exit,true);
// Create the text field
pFrame.addText("TestFile",true);
// Add the icon image
pFrame.addIconImage("/com/basis/install/gui/BBjReg.gif");
}
public void actionPerformed(ActionEvent actionEvent)
{
/* get the src of the action event */
Object src = actionEvent.getSource();
}
public static void main(Str