--- smalltalk-3.0.1/sigsegv/src/handler-unix.c~ 2008-01-22 11:14:33.000000000 +0100 +++ smalltalk-3.0.1/sigsegv/src/handler-unix.c 2008-02-07 13:31:13.000000000 +0100 @@ -462,8 +462,10 @@ { int dummy; remember_stack_top (&dummy); - if (!stack_top) - return -1; + if (!stack_top) { + extern void *__libc_stack_end; + stack_top = __libc_stack_end; + } } #endif --- smalltalk-3.0.1/sigsegv/src/stackvma-linux.c~ 2008-01-22 11:14:33.000000000 +0100 +++ smalltalk-3.0.1/sigsegv/src/stackvma-linux.c 2008-02-07 13:31:57.000000000 +0100 @@ -51,7 +51,8 @@ break; while (c = getc (fp), c != EOF && c != '\n') continue; - if (address >= start && address <= end - 1) + if (address >= start && address <= end - 1 && + (start != end /* ignore maps hidden by PaX */)) { vma->start = start; vma->end = end;