Esempio n. 1
0
void factor_vm::verify_memory_protection_error(cell addr) {
  /* Called from the OS-specific top halves of the signal handlers to
     make sure it's safe to dispatch to memory_signal_handler_impl. */
  if (fatal_erroring_p)
    fa_diddly_atal_error();
  if (faulting_p && !code->safepoint_p(addr))
    fatal_error("Double fault", addr);
  else if (fep_p)
    fatal_error("Memory protection fault during low-level debugger", addr);
  else if (atomic::load(&current_gc_p))
    fatal_error("Memory protection fault during gc", addr);
}
Esempio n. 2
0
void fatal_error(const char *msg, cell tagged)
{
	if (factor_vm::fatal_erroring_p)
		fa_diddly_atal_error();

	factor_vm::fatal_erroring_p = true;

	std::cout << "fatal_error: " << msg;
	std::cout << ": " << (void*)tagged;
	std::cout << std::endl;
	abort();
}
Esempio n. 3
0
void fatal_error(const char* msg, cell tagged) {
  if (factor_vm::fatal_erroring_p)
    fa_diddly_atal_error();

  factor_vm::fatal_erroring_p = true;

  std::cout << "fatal_error: " << msg;
  std::cout << ": " << (void*)tagged;
  std::cout << std::endl << std::endl;
  factor_vm* vm = current_vm();
  if (vm->data) {
    vm->dump_memory_layout(std::cout);
  }
  abort();
}