if (page_size < 0) {
BT_LOGF("Cannot get system's page size: ret=%d",
page_size);
- abort();
+ bt_common_abort();
}
return page_size;
BUF_STD_APPEND_SINGLE_ARG(int);
break;
default:
- abort();
+ bt_common_abort();
}
break;
}
BUF_STD_APPEND_SINGLE_ARG(wchar_t *);
break;
default:
- abort();
+ bt_common_abort();
}
break;
case 'd':
BUF_STD_APPEND_SINGLE_ARG(size_t);
break;
default:
- abort();
+ bt_common_abort();
}
break;
case 'o':
BUF_STD_APPEND_SINGLE_ARG(size_t);
break;
default:
- abort();
+ bt_common_abort();
}
break;
case 'f':
BUF_STD_APPEND_SINGLE_ARG(long double);
break;
default:
- abort();
+ bt_common_abort();
}
break;
case 'p':
if (length_mod == LENGTH_MOD_NONE) {
BUF_STD_APPEND_SINGLE_ARG(void *);
} else {
- abort();
+ bt_common_abort();
}
break;
default:
- abort();
+ bt_common_abort();
}
update_rw_fmt:
g_free(buf);
return ret;
}
+
+BT_HIDDEN
+void bt_common_abort(void)
+{
+ static const char * const exec_on_abort_env_name =
+ "BABELTRACE_EXEC_ON_ABORT";
+ const char *env_exec_on_abort;
+
+ env_exec_on_abort = getenv(exec_on_abort_env_name);
+ if (env_exec_on_abort) {
+ if (bt_common_is_setuid_setgid()) {
+ goto do_abort;
+ }
+
+ (void) g_spawn_command_line_sync(env_exec_on_abort,
+ NULL, NULL, NULL, NULL);
+ }
+
+do_abort:
+ abort();
+}