+static void
+on_activate (GApplication * app, gpointer ud)
+{
+ struct sigaction fatal_error_action;
+ sigset_t sigset;
+ g_return_if_fail (0 == sigemptyset (&sigset));
+ fatal_error_dialog =
+ gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+ _("Psppire: Fatal Error"));
+
+ diagnostic_info = prepare_diagnostic_information ();
+
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (fatal_error_dialog),
+ _("You have discovered a bug in PSPP. "
+ "Please report this to %s including all of the following information, "
+ "and a description of what you were doing when this happened."),
+ PACKAGE_BUGREPORT);
+
+ g_return_if_fail (fatal_error_dialog != NULL);
+
+ GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (fatal_error_dialog));
+ fatal_error_label = gtk_label_new ("");
+ g_object_set (fatal_error_label,
+ "selectable", TRUE,
+ "wrap", TRUE,
+ NULL);
+ gtk_container_add (GTK_CONTAINER (content_area), fatal_error_label);
+
+ gtk_widget_show_all (content_area);
+
+ fatal_error_action.sa_handler = fatal_error_handler;
+ fatal_error_action.sa_mask = sigset;
+ fatal_error_action.sa_flags = 0;
+
+ post_initialise (app);
+
+ GtkWindow *x = create_data_window ();
+ gtk_application_add_window (GTK_APPLICATION (app), x);
+
+ wait_for_splash (app, x);
+ sigaction (SIGABRT, &fatal_error_action, NULL);
+ sigaction (SIGSEGV, &fatal_error_action, NULL);
+ sigaction (SIGFPE, &fatal_error_action, NULL);
+}