From f4d2a1bb4df2f65b650be704bffb7ea469ae0232 Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Mon, 31 Oct 2022 13:03:46 +0100 Subject: [PATCH 1/1] installer: Add core dump support. Fixes: * gnu/installer.scm (installer-program): Enable core dump generation. * gnu/installer/dump.scm (%core-dump): New variable. (prepare-dump): Copy the core dump file. * gnu/installer/newt/welcome.scm (run-welcome-page): Propose to report an installation that previously generated a core dump. --- gnu/installer.scm | 6 ++++++ gnu/installer/dump.scm | 10 +++++++++- gnu/installer/newt/welcome.scm | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/gnu/installer.scm b/gnu/installer.scm index 8a6e604fa5..52c595b5b7 100644 --- a/gnu/installer.scm +++ b/gnu/installer.scm @@ -389,6 +389,12 @@ (define installer-builder (ice-9 match) (ice-9 textual-ports)) + ;; Enable core dump generation. + (setrlimit 'core #f #f) + (call-with-output-file "/proc/sys/kernel/core_pattern" + (lambda (port) + (format port %core-dump))) + ;; Initialize gettext support so that installers can use ;; (guix i18n) module. #$init-gettext diff --git a/gnu/installer/dump.scm b/gnu/installer/dump.scm index daa02f205a..f91cbae021 100644 --- a/gnu/installer/dump.scm +++ b/gnu/installer/dump.scm @@ -28,13 +28,17 @@ (define-module (gnu installer dump) #:use-module (web http) #:use-module (web response) #:use-module (webutils multipart) - #:export (prepare-dump + #:export (%core-dump + prepare-dump make-dump send-dump-report)) ;; The installer crash dump type. (define %dump-type "installer-dump") +;; The core dump file. +(define %core-dump "/tmp/installer-core-dump") + (define (result->list result) "Return the alist for the given RESULT." (hash-map->list (lambda (k v) @@ -66,6 +70,10 @@ (define dump-dir ;; syslog (copy-file "/var/log/messages" "syslog") + ;; core dump + (when (file-exists? %core-dump) + (copy-file %core-dump "core-dump")) + ;; dmesg (let ((pipe (open-pipe* OPEN_READ "dmesg"))) (call-with-output-file "dmesg" diff --git a/gnu/installer/newt/welcome.scm b/gnu/installer/newt/welcome.scm index 0bca44d1b2..5d47591d67 100644 --- a/gnu/installer/newt/welcome.scm +++ b/gnu/installer/newt/welcome.scm @@ -20,6 +20,7 @@ (define-module (gnu installer newt welcome) #:use-module ((gnu build linux-modules) #:select (modules-loaded)) + #:use-module (gnu installer dump) #:use-module (gnu installer steps) #:use-module (gnu installer utils) #:use-module (gnu installer newt page) @@ -132,6 +133,20 @@ (define (run-welcome-page logo) the system does not boot, perhaps you will need to add nomodeset to the kernel arguments and need to configure the uvesafb kernel module.") (G_ "Pre-install warning"))) + (when (file-exists? %core-dump) + (match + (choice-window + (G_ "Previous installation failed") + (G_ "Continue") + (G_ "Report the failure") + (G_ "It seems that the previous installation exited unexpectedly \ +and generated a core dump. Do you want to continue or to report the failure \ +first?")) + (1 #t) + (2 (raise + (condition + (&message + (message "User abort."))))))) (run-menu-page (G_ "GNU Guix install") (G_ "Welcome to GNU Guix system installer! -- 2.38.0