< prev index next >
src/os_cpu/linux_x86/vm/os_linux_x86.cpp
Print this page
@@ -433,10 +433,25 @@
os::block_on_serialize_page_trap();
return true;
}
}
+ if ((sig == SIGSEGV) && UseShenandoahGC
+ && (ShenandoahVerifyWritesToFromSpace || ShenandoahVerifyReadsToFromSpace)) {
+ if (Universe::heap()->is_in(info->si_addr)) {
+ ucontext_t* uc = (ucontext_t*) ucVoid;
+ address pc = (address) os::Linux::ucontext_get_pc(uc);
+ os::print_context(tty, ucVoid);
+ Universe::heap()->print();
+ if (ShenandoahVerifyReadsToFromSpace) {
+ assert(false, "Illegal read to From Space");
+ } else {
+ assert(false, "Illegal write to From Space");
+ }
+ }
+ }
+
#ifndef AMD64
// Execution protection violation
//
// This should be kept as the last step in the triage. We don't
// have a dedicated trap number for a no-execute fault, so be
< prev index next >