Mercurial > hg > graal-jvmci-8
comparison src/os_cpu/linux_x86/vm/os_linux_x86.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 | 12285410684f |
children | 9ef47379df20 |
comparison
equal
deleted
inserted
replaced
8709:255c0a4cb4eb | 8710:9058789475af |
---|---|
303 } else if (thread->in_stack_red_zone(addr)) { | 303 } else if (thread->in_stack_red_zone(addr)) { |
304 // Fatal red zone violation. Disable the guard pages and fall through | 304 // Fatal red zone violation. Disable the guard pages and fall through |
305 // to handle_unexpected_exception way down below. | 305 // to handle_unexpected_exception way down below. |
306 thread->disable_stack_red_zone(); | 306 thread->disable_stack_red_zone(); |
307 tty->print_raw_cr("An irrecoverable stack overflow has occurred."); | 307 tty->print_raw_cr("An irrecoverable stack overflow has occurred."); |
308 | |
309 // This is a likely cause, but hard to verify. Let's just print | |
310 // it as a hint. | |
311 tty->print_raw_cr("Please check if any of your loaded .so files has " | |
312 "enabled executable stack (see man page execstack(8))"); | |
308 } else { | 313 } else { |
309 // Accessing stack address below sp may cause SEGV if current | 314 // Accessing stack address below sp may cause SEGV if current |
310 // thread has MAP_GROWSDOWN stack. This should only happen when | 315 // thread has MAP_GROWSDOWN stack. This should only happen when |
311 // current thread was created by user code with MAP_GROWSDOWN flag | 316 // current thread was created by user code with MAP_GROWSDOWN flag |
312 // and then attached to VM. See notes in os_linux.cpp. | 317 // and then attached to VM. See notes in os_linux.cpp. |