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