* bug#64455: shepherd: unable to use redefined system/system* in 0.10.1
@ 2023-07-03 17:46 buma2023
2023-07-10 22:46 ` Ludovic Courtès
2023-07-30 17:23 ` urb59
0 siblings, 2 replies; 4+ messages in thread
From: buma2023 @ 2023-07-03 17:46 UTC (permalink / raw)
To: 64455; +Cc: buma2023@outlook.fr
[-- Attachment #1: Type: text/plain, Size: 2110 bytes --]
Hello,
I am using happily shepherd since a few years as my init system on
Debian: amd64 (desktop and notebook), armhf (Cubox).
I was using 0.9.1 with guile-3.0.5 and fibers-1.1.1.
I recently tried 0.10.1 with guile-3.0.9 and fibers 1.3.1 and
encountered a problem with using system and system* in my services:
the simple fact to have the symbol system or system* in
/etc/shepherd.scm or included files (even if the command is not
executed) leads to a misbehaving shepherd, more specifically the
shepherd socket disappears; the system boots but with multiple
instances of the launched daemons.
If a system/system* command is executed while booting, shepherd
blocks at the point of its execution.
Example of service causing the failure:
(register-services
(make <service>
#:provides '(mytest)
#:start (lambda args
(system "touch /tmp/somefile")
#t)
))
The service is not started at boot, I have to do it manually afterwards,
but I never can go there, as the shepherd socket is missing.
I I add at the end of /etc/shepherd.scm:
(system "touch /tmp/somefile")
I have the same problem.
Strangely at build time the test tests/system-star.sh succeeds, and
after I have booted (without refering to a system/system* command) , I
can run:
# export PID=$$; herd eval root "(system \"echo success! >/proc/$PID/fd/1\")"
(in my case, output appears in /var/log/syslog so I need the redirection)
I have read a bit documentation and code to be aware that system and
system* were redefined in shepherd to be non blocking, I suspect the
problem is how this is done.
I would prefer to have new names in shepherd for the redefined
system/system* and keep the old ones intact.
I have a workaround for this problem: replacing system/system* by
helpers I use, like:
(define (system-value command)
"Return first line of output when calling (system command)"
(let* ((port (open-input-pipe command))
(str (read-line port)))
(close-pipe port)
str))
but this is a band-aid.
[-- Attachment #2: Type: text/html, Size: 4819 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#64455: shepherd: unable to use redefined system/system* in 0.10.1
2023-07-03 17:46 bug#64455: shepherd: unable to use redefined system/system* in 0.10.1 buma2023
@ 2023-07-10 22:46 ` Ludovic Courtès
2023-07-11 13:22 ` Ludovic Courtès
2023-07-30 17:23 ` urb59
1 sibling, 1 reply; 4+ messages in thread
From: Ludovic Courtès @ 2023-07-10 22:46 UTC (permalink / raw)
To: buma2023; +Cc: 64455
Hi,
"buma2023@outlook.fr" <buma2023@outlook.fr> skribis:
> I am using happily shepherd since a few years as my init system on
> Debian: amd64 (desktop and notebook), armhf (Cubox).
Interesting! I didn’t know of such uses.
> I was using 0.9.1 with guile-3.0.5 and fibers-1.1.1.
>
> I recently tried 0.10.1 with guile-3.0.9 and fibers 1.3.1 and
> encountered a problem with using system and system* in my services:
> the simple fact to have the symbol system or system* in
> /etc/shepherd.scm or included files (even if the command is not
> executed) leads to a misbehaving shepherd, more specifically the
> shepherd socket disappears; the system boots but with multiple
> instances of the launched daemons.
>
> If a system/system* command is executed while booting, shepherd
> blocks at the point of its execution.
>
> Example of service causing the failure:
>
> (register-services
> (make <service>
> #:provides '(mytest)
> #:start (lambda args
> (system "touch /tmp/somefile")
> #t)
> ))
>
> The service is not started at boot, I have to do it manually afterwards,
> but I never can go there, as the shepherd socket is missing.
I can reproduce it like this:
--8<---------------cut here---------------start------------->8---
$ cat /tmp/t.conf
(register-services
(make <service>
#:provides '(mytest)
#:start (lambda args
(system "touch /tmp/somefile")
#t)))
(start 'mytest)
$ shepherd -I -c/tmp/t.conf -s /tmp/sock
Starting service root...
Service root started.
Service root running with value #t.
Service root has been started.
Starting service mytest...
C-c C-z
[1]+ Stopped shepherd -I -c/tmp/t.conf -s /tmp/sock
$ bg
[1]+ shepherd -I -c/tmp/t.conf -s /tmp/sock &
$ herd -s /tmp/sock status
herd: error: /tmp/sock: Connection refused
--8<---------------cut here---------------end--------------->8---
This is both with 0.10.1 and with
d5ed516e736ce473902cc86b5cf4f61f27ebb642.
To be continued…
Ludo’.
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#64455: shepherd: unable to use redefined system/system* in 0.10.1
2023-07-10 22:46 ` Ludovic Courtès
@ 2023-07-11 13:22 ` Ludovic Courtès
0 siblings, 0 replies; 4+ messages in thread
From: Ludovic Courtès @ 2023-07-11 13:22 UTC (permalink / raw)
To: buma2023; +Cc: 64455
Hi,
Ludovic Courtès <ludo@gnu.org> skribis:
> "buma2023@outlook.fr" <buma2023@outlook.fr> skribis:
>
>> I am using happily shepherd since a few years as my init system on
>> Debian: amd64 (desktop and notebook), armhf (Cubox).
>
> Interesting! I didn’t know of such uses.
>
>> I was using 0.9.1 with guile-3.0.5 and fibers-1.1.1.
>>
>> I recently tried 0.10.1 with guile-3.0.9 and fibers 1.3.1 and
>> encountered a problem with using system and system* in my services:
>> the simple fact to have the symbol system or system* in
>> /etc/shepherd.scm or included files (even if the command is not
>> executed) leads to a misbehaving shepherd, more specifically the
>> shepherd socket disappears; the system boots but with multiple
>> instances of the launched daemons.
>>
>> If a system/system* command is executed while booting, shepherd
>> blocks at the point of its execution.
>>
>> Example of service causing the failure:
>>
>> (register-services
>> (make <service>
>> #:provides '(mytest)
>> #:start (lambda args
>> (system "touch /tmp/somefile")
>> #t)
>> ))
>>
>> The service is not started at boot, I have to do it manually afterwards,
>> but I never can go there, as the shepherd socket is missing.
>
> I can reproduce it like this:
>
> $ cat /tmp/t.conf
> (register-services
> (make <service>
> #:provides '(mytest)
> #:start (lambda args
> (system "touch /tmp/somefile")
> #t)))
>
> (start 'mytest)
> $ shepherd -I -c/tmp/t.conf -s /tmp/sock
> Starting service root...
> Service root started.
> Service root running with value #t.
> Service root has been started.
> Starting service mytest...
> C-c C-z
> [1]+ Stopped shepherd -I -c/tmp/t.conf -s /tmp/sock
> $ bg
> [1]+ shepherd -I -c/tmp/t.conf -s /tmp/sock &
> $ herd -s /tmp/sock status
> herd: error: /tmp/sock: Connection refused
>
> This is both with 0.10.1 and with
> d5ed516e736ce473902cc86b5cf4f61f27ebb642.
Sorry, the bug is reproducible with 0.10.1 but *not* with
d5ed516e736ce473902cc86b5cf4f61f27ebb642.
I believe this was fixed by Shepherd commit
2b310bd3b0ba0d7a08c77b456d34369cd6444edb (that is, after 0.10.1).
I think I’ll release 0.10.2 within a couple of weeks, but it would be
great if you could confirm that current Shepherd ‘master’ works for you.
Thanks!
Ludo’.
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#64455: shepherd: unable to use redefined system/system* in 0.10.1
2023-07-03 17:46 bug#64455: shepherd: unable to use redefined system/system* in 0.10.1 buma2023
2023-07-10 22:46 ` Ludovic Courtès
@ 2023-07-30 17:23 ` urb59
1 sibling, 0 replies; 4+ messages in thread
From: urb59 @ 2023-07-30 17:23 UTC (permalink / raw)
To: 64455
[-- Attachment #1: Type: text/plain, Size: 2961 bytes --]
Hello,
Sorry for the late reply, but release 0.10.2 didn't fix the issue.
Current workaround: suppressing redefinition of system/system* and suppressing running tests/system-star.sh
I am open to suggestions of how to help you debug that.
Don't reply to buma2023, it was me, but it's a throw away address no longer valid.
>Hi,
>
>Ludovic Courtès <ludo <at> gnu.org> skribis:
>
>> "buma2023 <at> outlook.fr" <buma2023 <at> outlook.fr> skribis:
>>
>>> I am using happily shepherd since a few years as my init system on
>>> Debian: amd64 (desktop and notebook), armhf (Cubox).
>>
>> Interesting! I didn’t know of such uses.
>>
>>> I was using 0.9.1 with guile-3.0.5 and fibers-1.1.1.
>>>
>>> I recently tried 0.10.1 with guile-3.0.9 and fibers 1.3.1 and
>>> encountered a problem with using system and system* in my services:
>>> the simple fact to have the symbol system or system* in
>>> /etc/shepherd.scm or included files (even if the command is not
>>> executed) leads to a misbehaving shepherd, more specifically the
>>> shepherd socket disappears; the system boots but with multiple
>>> instances of the launched daemons.
>>>
>>> If a system/system* command is executed while booting, shepherd
>>> blocks at the point of its execution.
>>>
>>> Example of service causing the failure:
>>>
>>> (register-services
>>> (make <service>
>>> #:provides '(mytest)
>>> #:start (lambda args
>>> (system "touch /tmp/somefile")
>>> #t)
>>> ))
>>>
>>> The service is not started at boot, I have to do it manually afterwards,
>>> but I never can go there, as the shepherd socket is missing.
>>
>> I can reproduce it like this:
>>
>> $ cat /tmp/t.conf
>> (register-services
>> (make <service>
>> #:provides '(mytest)
>> #:start (lambda args
>> (system "touch /tmp/somefile")
>> #t)))
>>
>> (start 'mytest)
>> $ shepherd -I -c/tmp/t.conf -s /tmp/sock
>> Starting service root...
>> Service root started.
>> Service root running with value #t.
>> Service root has been started.
>> Starting service mytest...
>> C-c C-z
>> [1]+ Stopped shepherd -I -c/tmp/t.conf -s /tmp/sock
>> $ bg
>> [1]+ shepherd -I -c/tmp/t.conf -s /tmp/sock &
>> $ herd -s /tmp/sock status
>> herd: error: /tmp/sock: Connection refused
>>
>> This is both with 0.10.1 and with
>> d5ed516e736ce473902cc86b5cf4f61f27ebb642.
>
>Sorry, the bug is reproducible with 0.10.1 but *not* with
>d5ed516e736ce473902cc86b5cf4f61f27ebb642.
>
>I believe this was fixed by Shepherd commit
>2b310bd3b0ba0d7a08c77b456d34369cd6444edb (that is, after 0.10.1).
>
>I think I’ll release 0.10.2 within a couple of weeks, but it would be
>great if you could confirm that current Shepherd ‘master’ works for you.
>
>Thanks!
>
>Ludo’.
>
Sincerely.
--
Bernard
[-- Attachment #2: Type: text/html, Size: 3935 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-08-04 20:11 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-03 17:46 bug#64455: shepherd: unable to use redefined system/system* in 0.10.1 buma2023
2023-07-10 22:46 ` Ludovic Courtès
2023-07-11 13:22 ` Ludovic Courtès
2023-07-30 17:23 ` urb59
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.