* bug#48368: bug#47172: Shepherd 0.8.1 tests fail on core-updates [not found] ` <87v9794l2a.fsf@gnu.org> @ 2021-05-23 15:23 ` Marius Bakke [not found] ` <875yz9qxrv.fsf@gnu.org> 1 sibling, 0 replies; 2+ messages in thread From: Marius Bakke @ 2021-05-23 15:23 UTC (permalink / raw) To: Ludovic Courtès, 47172; +Cc: 48368 [-- Attachment #1: Type: text/plain, Size: 1652 bytes --] Ludovic Courtès <ludo@gnu.org> skriver: > Ludovic Courtès <ludo@gnu.org> skribis: > >> This turns out to be due to a… miscompilation bug. >> >> In (shepherd scripts herd), ‘run-command’ has this code: >> >> (let ((sock (open-connection socket-file)) >> (action* (if (and (eq? action 'detailed-status) >> (memq service '(root shepherd))) >> 'status >> action))) >> …) >> >> Problem is that everything works as if (eq? action 'detailed-status) >> was omitted, such that ‘herd stop root’ is interpreted as ‘herd status >> root’. > > A workaround that works with 3.0.7 is swapping the two ‘and’ > sub-expressions: > > diff --git a/modules/shepherd/scripts/herd.scm b/modules/shepherd/scripts/herd.scm > index 106de1e..39d2e34 100644 > --- a/modules/shepherd/scripts/herd.scm > +++ b/modules/shepherd/scripts/herd.scm > @@ -126,8 +126,8 @@ of pairs." > the daemon via SOCKET-FILE." > (with-system-error-handling > (let ((sock (open-connection socket-file)) > - (action* (if (and (eq? action 'detailed-status) > - (memq service '(root shepherd))) > + (action* (if (and (memq service '(root shepherd)) > + (eq? action 'detailed-status)) > 'status > action))) > ;; Send the command. Cc'ing the relevant Guile bug: https://bugs.gnu.org/48368 See also commit 79be6a985799adc6d663890250f4fb7c12f015b4 on 'core-updates' that builds with -O1 as a less satisfactory workaround. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 247 bytes --] ^ permalink raw reply [flat|nested] 2+ messages in thread
[parent not found: <875yz9qxrv.fsf@gnu.org>]
* bug#48368: bug#47172: Shepherd 0.8.1 tests fail on core-updates [not found] ` <875yz9qxrv.fsf@gnu.org> @ 2021-05-23 21:43 ` Ludovic Courtès 0 siblings, 0 replies; 2+ messages in thread From: Ludovic Courtès @ 2021-05-23 21:43 UTC (permalink / raw) To: Marius Bakke; +Cc: 47172, 48368 [-- Attachment #1: Type: text/plain, Size: 1427 bytes --] Hello, Marius Bakke <marius@gnu.org> skribis: > Ludovic Courtès <ludo@gnu.org> skriver: [...] >> A workaround that works with 3.0.7 is swapping the two ‘and’ >> sub-expressions: >> >> diff --git a/modules/shepherd/scripts/herd.scm b/modules/shepherd/scripts/herd.scm >> index 106de1e..39d2e34 100644 >> --- a/modules/shepherd/scripts/herd.scm >> +++ b/modules/shepherd/scripts/herd.scm >> @@ -126,8 +126,8 @@ of pairs." >> the daemon via SOCKET-FILE." >> (with-system-error-handling >> (let ((sock (open-connection socket-file)) >> - (action* (if (and (eq? action 'detailed-status) >> - (memq service '(root shepherd))) >> + (action* (if (and (memq service '(root shepherd)) >> + (eq? action 'detailed-status)) >> 'status >> action))) >> ;; Send the command. > > Cc'ing the relevant Guile bug: > > https://bugs.gnu.org/48368 Oh nice! (It would have saved me a bit of time to catch up on email beforehand. :-)) > See also commit 79be6a985799adc6d663890250f4fb7c12f015b4 on > 'core-updates' that builds with -O1 as a less satisfactory workaround. I found that ‘-O2 -Ono-resolve-primitives’ also does the trick. If we manually replace ‘memq’ by two ‘eq?’ tests (which is what the compiler does), the same problem is exhibited: [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 643 bytes --] diff --git a/modules/shepherd/scripts/herd.scm b/modules/shepherd/scripts/herd.scm index 106de1e..513508f 100644 --- a/modules/shepherd/scripts/herd.scm +++ b/modules/shepherd/scripts/herd.scm @@ -127,7 +127,8 @@ the daemon via SOCKET-FILE." (with-system-error-handling (let ((sock (open-connection socket-file)) (action* (if (and (eq? action 'detailed-status) - (memq service '(root shepherd))) + (or (eq? service 'root) + (eq? service 'shepherd))) 'status action))) ;; Send the command. [-- Attachment #3: Type: text/plain, Size: 192 bytes --] ‘-Ono-resolve-primitives’ also helps in this case. ‘-Ono-optimize-branch-chains’ has no effect. So, not much progress, but at least we have a workaround. Thanks, Ludo’. ^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-05-23 21:43 UTC | newest] Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <37305bfa08faea95b45a6496623154c2ebab1f11.camel@zaclys.net> [not found] ` <87zgwl4ui0.fsf@gnu.org> [not found] ` <87v9794l2a.fsf@gnu.org> 2021-05-23 15:23 ` bug#48368: bug#47172: Shepherd 0.8.1 tests fail on core-updates Marius Bakke [not found] ` <875yz9qxrv.fsf@gnu.org> 2021-05-23 21:43 ` Ludovic Courtès
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).