mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
gnu: shepherd: Avoid "Bad file descriptor" warnings.
* gnu/packages/patches/shepherd-close-fds.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/admin.scm (shepherd)[source]: Use it.
This commit is contained in:
parent
cbb76780ef
commit
4bd70904c7
3 changed files with 39 additions and 1 deletions
|
@ -1061,6 +1061,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/scotch-test-threading.patch \
|
||||
%D%/packages/patches/sdl-libx11-1.6.patch \
|
||||
%D%/packages/patches/seq24-rename-mutex.patch \
|
||||
%D%/packages/patches/shepherd-close-fds.patch \
|
||||
%D%/packages/patches/shishi-fix-libgcrypt-detection.patch \
|
||||
%D%/packages/patches/slim-session.patch \
|
||||
%D%/packages/patches/slim-config.patch \
|
||||
|
|
|
@ -162,7 +162,8 @@ (define-public shepherd
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"174q1qg7yg6w1hfvlfv720hr6hid4h5xzw15y3ycfpspllzldhcb"))))
|
||||
"174q1qg7yg6w1hfvlfv720hr6hid4h5xzw15y3ycfpspllzldhcb"))
|
||||
(patches (search-patches "shepherd-close-fds.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--localstatedir=/var")))
|
||||
|
|
36
gnu/packages/patches/shepherd-close-fds.patch
Normal file
36
gnu/packages/patches/shepherd-close-fds.patch
Normal file
|
@ -0,0 +1,36 @@
|
|||
commit 3e346a2a84b099766ea8a3a4a4549f6172483062
|
||||
Author: Ludovic Courtès <ludo@gnu.org>
|
||||
Date: Sun Dec 3 22:30:03 2017 +0100
|
||||
|
||||
service: In 'exec-command', close open ports before 'execl'.
|
||||
|
||||
This gets rid of annoying "Bad file descriptor" warnings from shepherd.
|
||||
|
||||
* modules/shepherd/service.scm (exec-command): In 'loop', invoke
|
||||
'close-port' and the ports returned by (fdes->ports i).
|
||||
|
||||
diff --git a/modules/shepherd/service.scm b/modules/shepherd/service.scm
|
||||
index b2d8bc5..0ad28a0 100644
|
||||
--- a/modules/shepherd/service.scm
|
||||
+++ b/modules/shepherd/service.scm
|
||||
@@ -1,5 +1,5 @@
|
||||
;; service.scm -- Representation of services.
|
||||
-;; Copyright (C) 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
+;; Copyright (C) 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;; Copyright (C) 2002, 2003 Wolfgang Järling <wolfgang@pro-linux.de>
|
||||
;; Copyright (C) 2014 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
|
||||
;; Copyright (C) 2016 Alex Kost <alezost@gmail.com>
|
||||
@@ -744,6 +744,14 @@ false."
|
||||
|
||||
(let loop ((i 3))
|
||||
(when (< i max-fd)
|
||||
+ ;; First try to close any ports associated with file descriptor I.
|
||||
+ ;; Otherwise the finalization thread might get around to closing
|
||||
+ ;; those ports eventually, which will raise an EBADF exception (on
|
||||
+ ;; 2.2), leading to messages like "error in the finalization
|
||||
+ ;; thread: Bad file descriptor".
|
||||
+ (for-each (lambda (port)
|
||||
+ (catch-system-error (close-port port)))
|
||||
+ (fdes->ports i))
|
||||
(catch-system-error (close-fdes i))
|
||||
(loop (+ i 1)))))
|
Loading…
Reference in a new issue