← Back to team overview

openjdk team mailing list archive

[Bug 726863] [NEW] OpenJDK crash in memcpy

 

Public bug reported:

Stacktrace and error messages:

Exception in thread "Thread-18" java.lang.NullPointerException
	at SimpleJTextPane.append(SimpleJTextPane.java:194)
	at ThumbnailConsole.append(ThumbnailConsole.java:63)
	at ErrorMessage.display(ErrorMessage.java:57)
	at Gui$18$9.stopProgress(Gui.java:1525)
	at Gui$14.run(Gui.java:1084)
	at java.lang.Thread.run(Thread.java:636)
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f042f796d2a, pid=10163, tid=139655713048320
#
# JRE version: 6.0_20-b20
# Java VM: OpenJDK 64-Bit Server VM (19.0-b09 mixed mode linux-amd64 compressed oops)
# Derivative: IcedTea6 1.9.5
# Distribution: Ubuntu 10.10, package 6b20-1.9.5-0ubuntu1
# Problematic frame:
# C  [libc.so.6+0x86d2a]  memcpy+0x29a

The code was the following (I suspect that the argument to the append method was null) -
it was supposed to the the results of e.getMessage() and I had been testing a "cancel"
button.  The interrupt was apparently caught while updating a progress bar - using a
method

			    public void stopProgress() {
					SwingUtilities.invokeAndWait
					    (new Runnable() {
						    public void run() {
							pbar.setEnabled(false);
							pbar.setForeground
							    (pbarFG);
						    }
						});
				    }
				} catch (Exception e) {
				   ErrorMessage.display(e.getMessage());
				}

ErrorMessage.display(arg) is defined by
    static public void display(String msg) {
	try {
	    err.append(msg);
	    err.append("\n");
	} catch (IOException e) {
	}
    }

and err was set to a console implementing the Appendable interface (so I could use System.err or
a text pane to log the messages.  The text pane method is:

public Appendable append(CharSequence csq) {
	try {
	    Document doc = getDocument();
	    String str = csq.toString();
	    doc.insertString(doc.getLength(), str, aset);
	} catch (BadLocationException e) {
	    // This should never happen due use of doc.getLength()
	    throw new RuntimeException("bad location exception");
	}
	return (Appendable) this;
    }

** Affects: openjdk-6 (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of OpenJDK,
which is subscribed to openjdk-6 in ubuntu.
https://bugs.launchpad.net/bugs/726863

Title:
  OpenJDK crash in memcpy

Status in “openjdk-6” package in Ubuntu:
  New

Bug description:
  Stacktrace and error messages:

  Exception in thread "Thread-18" java.lang.NullPointerException
  	at SimpleJTextPane.append(SimpleJTextPane.java:194)
  	at ThumbnailConsole.append(ThumbnailConsole.java:63)
  	at ErrorMessage.display(ErrorMessage.java:57)
  	at Gui$18$9.stopProgress(Gui.java:1525)
  	at Gui$14.run(Gui.java:1084)
  	at java.lang.Thread.run(Thread.java:636)
  #
  # A fatal error has been detected by the Java Runtime Environment:
  #
  #  SIGSEGV (0xb) at pc=0x00007f042f796d2a, pid=10163, tid=139655713048320
  #
  # JRE version: 6.0_20-b20
  # Java VM: OpenJDK 64-Bit Server VM (19.0-b09 mixed mode linux-amd64 compressed oops)
  # Derivative: IcedTea6 1.9.5
  # Distribution: Ubuntu 10.10, package 6b20-1.9.5-0ubuntu1
  # Problematic frame:
  # C  [libc.so.6+0x86d2a]  memcpy+0x29a

  The code was the following (I suspect that the argument to the append method was null) -
  it was supposed to the the results of e.getMessage() and I had been testing a "cancel"
  button.  The interrupt was apparently caught while updating a progress bar - using a
  method

  			    public void stopProgress() {
  					SwingUtilities.invokeAndWait
  					    (new Runnable() {
  						    public void run() {
  							pbar.setEnabled(false);
  							pbar.setForeground
  							    (pbarFG);
  						    }
  						});
  				    }
  				} catch (Exception e) {
  				   ErrorMessage.display(e.getMessage());
  				}

  ErrorMessage.display(arg) is defined by
      static public void display(String msg) {
  	try {
  	    err.append(msg);
  	    err.append("\n");
  	} catch (IOException e) {
  	}
      }

  and err was set to a console implementing the Appendable interface (so I could use System.err or
  a text pane to log the messages.  The text pane method is:

  public Appendable append(CharSequence csq) {
  	try {
  	    Document doc = getDocument();
  	    String str = csq.toString();
  	    doc.insertString(doc.getLength(), str, aset);
  	} catch (BadLocationException e) {
  	    // This should never happen due use of doc.getLength()
  	    throw new RuntimeException("bad location exception");
  	}
  	return (Appendable) this;
      }



Follow ups

References