stack overflow & null pointer exceptions

Godmar Back gback@cs.utah.edu
Wed Apr 7 14:26:00 GMT 1999


 Hi,
it appears that gcj does not yet implement stack overflow errors properly:
the following program segfaults. 
Apropos segfaulting: it also appears as though NullPointerExceptions aren't
properly caught (?). See the second test case.
	- Godmar
// Overflow.java
/**
 * Check that stack overflows are handled properly in main thread and
 * other threads.
 *
 * @author Godmar Back <gback@cs.utah.edu>
 */
public class Overflow extends Thread
{
 public void run() {
 try {
 recurse();
 } catch (StackOverflowError e) {
 System.out.println("Success.");
 }
 }
 void recurse() {
 recurse();
 }
 public static void main(String av[]) throws Exception
 {
 Overflow o = new Overflow();
 o.run(); // check for main thread
 o.start(); // check for other thread
 o.join();
 }
}
/* Expected Output:
Success.
Success.
*/
// NullPointerTest.java
/*
 * test that caught null pointers exceptions in finalizers work correctly
 * and that local variables are accessible in null pointer exception handlers.
 */
import java.io.*;
public class NullPointerTest {
 static String s;
 public static void main(String[] args) {
 System.out.println(tryfinally() + s);
 }
 public static String tryfinally() {
 String yuck = null;
 String local_s = null;
 try {
 return "This is ";
 } finally {
 try {
 local_s = "Perfect";
 /* trigger null pointer exception */
 String x = yuck.toLowerCase();
 } catch (Exception _) {
 /* 
 * when the null pointer exception is caught, we must still
 * be able to access local_s.
 * Our return address for the finally clause must also still
 * be intact.
 */
 s = local_s;
 }
 }
 }
}
/* Expected Output:
This is Perfect
*/


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /