// // This is a signal handler that does thread and task reporting. // static void SIGINT_handler(int sig) { signal(sig, SIG_IGN); if (blockreport) report_locked_threads(); if (do_taskReport) report_all_tasks(); chpl_exit_any(1); }
static void SIGINT_handler(int sig) { signal(sig, SIG_IGN); if (blockreport) { report_locked_threads(); } if (taskreport) { fprintf(stderr, "Taskreport is currently unsupported by the qthreads tasking layer.\n"); // report_all_tasks(); } chpl_exit_any(1); }
// // Check for and report deadlock, when a suspension deadline passes. // static void check_for_deadlock(void) { // Blockreport should be true here, because this can't be called // unless set_block_loc() returns true, and it can't do that unless // blockreport is true. So this is just a check for ongoing // internal consistency. assert(blockreport); if (get_thread_private_data()->lockRprt->prev_progress_cnt < progress_cnt) return; fflush(stdout); fprintf(stderr, "Program is deadlocked!\n"); report_locked_threads(); if (do_taskReport) report_all_tasks(); chpl_exit_any(1); }
static void SIGINT_handler(int sig) { signal(sig, SIG_IGN); if (blockreport) { #ifdef SUPPORT_BLOCKREPORT report_locked_threads(); #else fprintf(stderr, "Blockreport is currently unsupported by the qthreads " "tasking layer.\n"); #endif } if (taskreport) { #ifdef SUPPORT_TASKREPORT report_all_tasks(); #else fprintf(stderr, "Taskreport is currently unsupported by the qthreads tasking layer.\n"); #endif } chpl_exit_any(1); }