示例#1
0
文件: test.c 项目: LA-Toth/tinu
void
_signal_handler(int signo)
{
  Backtrace *trace;

#ifdef COREDUMPER_ENABLED
  WriteCoreDump(core_file_name(g_test_context_current->m_core_dir,
    g_test_case_current->m_suite->m_name, g_test_case_current->m_name));
#endif
  trace = backtrace_create(3);
  log_error("Signal received while running a test",
            msg_tag_int("signal", signo),
            msg_tag_str("suite", g_test_case_current->m_suite->m_name),
            msg_tag_str("test", g_test_case_current->m_name), NULL);
  backtrace_dump_log(trace, "    ", LOG_ERR);
  backtrace_unreference(trace);

  if (signo == SIGABRT)
    {
      _test_run_hooks(TEST_HOOK_SIGNAL_ABORT);
      g_test_case_current_result = TEST_ABORT;
    }
  else
    {
      _test_run_hooks(TEST_HOOK_SIGNAL_SEGFAULT);
      g_test_case_current_result = TEST_SEGFAULT;
    }

  setcontext(g_test_ucontext.uc_link);
}
示例#2
0
/* Writes the core file to disk. This is a convenience method wrapping
 * GetCoreDump(). If a core file could not be generated for any reason,
 * -1 is returned and errno is set appropriately. On success, zero is
 * returned.
 */
EC_BOOL ccoredumper_write(const char *file_name)
{
    if(0 != WriteCoreDump(file_name))
    {
        dbg_log(SEC_0107_CCOREDUMPER, 0)(LOGSTDOUT, "error:ccoredumper_write:failed to dump core to file %s\n", file_name);
        return (EC_FALSE);
    }
    return (EC_TRUE);
}