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