comparison src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp @ 8710:9058789475af

7107135: Stack guard pages are no more protected after loading a shared library with executable stack Summary: Detect the execstack attribute of the loaded library and attempt to fix the stack guard using Safepoint op. Reviewed-by: dholmes, zgu Contributed-by: ioi.lam@oracle.com
author iklam
date Tue, 05 Mar 2013 13:55:56 -0800
parents d2f8c38e543d
children 746b070f5022
comparison
equal deleted inserted replaced
8709:255c0a4cb4eb 8710:9058789475af
408 } else if (thread->in_stack_red_zone(addr)) { 408 } else if (thread->in_stack_red_zone(addr)) {
409 // Fatal red zone violation. Disable the guard pages and fall through 409 // Fatal red zone violation. Disable the guard pages and fall through
410 // to handle_unexpected_exception way down below. 410 // to handle_unexpected_exception way down below.
411 thread->disable_stack_red_zone(); 411 thread->disable_stack_red_zone();
412 tty->print_raw_cr("An irrecoverable stack overflow has occurred."); 412 tty->print_raw_cr("An irrecoverable stack overflow has occurred.");
413
414 // This is a likely cause, but hard to verify. Let's just print
415 // it as a hint.
416 tty->print_raw_cr("Please check if any of your loaded .so files has "
417 "enabled executable stack (see man page execstack(8))");
413 } else { 418 } else {
414 // Accessing stack address below sp may cause SEGV if current 419 // Accessing stack address below sp may cause SEGV if current
415 // thread has MAP_GROWSDOWN stack. This should only happen when 420 // thread has MAP_GROWSDOWN stack. This should only happen when
416 // current thread was created by user code with MAP_GROWSDOWN flag 421 // current thread was created by user code with MAP_GROWSDOWN flag
417 // and then attached to VM. See notes in os_linux.cpp. 422 // and then attached to VM. See notes in os_linux.cpp.