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. |