Laurent Bercot writes:
>>Anyway, recompile with -u 1000, re-update, and try again. Now, I can't even 
>>do s6-rc -a list; I get:
>>s6-rc fatal: unable to take locks: Permission denied
>
> Hmmm, that's weird. If all the previous operations have been done as
> the same user, you should never get EPERM. Have you run something as
> root before?

Indeed, I did. My command history from last night shows that before I 
remembered to try compiling with -u 1000, I tried sudo s6-rc change testpipe, 
after the previous non-sudo invocation failed with a permission error, so that 
must be what screwed it up. I don't remember doing that. Must have been really 
tired and frustrated.

So I killed svscan, removed my compiled databases and scan and live dirs, and 
started from scratch. Now s6-rc succeeds, but when I brought up testpipe (two 
daemons funneling to a logger), I got once per second:
fdclose: fatal: unable to exec ./run.user: Exec format error

Oops, I forgot #!/bin/bash at the top of one of the run files. (Would have been 
helpful if the error message had specified which one.) Fix that, recompile, 
make new link, do an update, try again. Now:
s6-fdholder-retrievec: fatal: unable to retrieve fd for id pipe:s6rc-r-logger: 
Broken pipe
s6-fdholder-retrievec: fatal: unable to retrieve fd for id pipe:s6rc-w-logger: 
Broken pipe
s6-fdholder-retrievec: fatal: unable to retrieve fd for id pipe:s6rc-r-logger: 
Connection reset by peer
s6-fdholder-retrievec: fatal: unable to retrieve fd for id pipe:s6rc-w-logger: 
Connection reset by peer

It also somehow managed to hose the terminal in which svscan was running. As 
in, when I try to type in it, only a small percentage of the letters actually 
appear. Killed svscan, tried to reset the terminal, no luck. This is the first 
time I remember ever getting an un-resettable terminal. No problem, I can just 
kill the terminal, but... weird.

Oops, after I added the forgotten #!/bin/bash, I forgot -u 1000 again when I 
recompiled. So, the failure should be expected, but hosing the terminal? 
Really? And the error messages give no hint of what's actually wrong, unless 
you're familiar with the internal design of s6, which seems an excessive burden 
for a mere user. I guess I'm spoiled by modern C compilers, which have become 
excellent in the past few years at explaining in exquisite detail exactly in 
which way I'm currently being an idiot.

So, remove the compiled databases and scan directory, recompile with -u 1000, 
restart svscan, re-run s6-rc-init, try testpipe again, and... success! Wow, 
that was unexpected. I'd become conditioned to expect failure.

Ok now, quick, while I remember how to use s6, I'll install it into my project 
and make sure it works perfectly, so I never have to touch it again. There are 
other things I'd be curious to try with it too, but I shouldn't keep pestering 
you and the mailing list for unpaid tech support, so I guess just take this as 
a data sample for what can happen when a random noob tries to use s6.

BTW, your explanations of why things are designed the way they are were helpful 
for understanding the system. I recommend copying them into the docs.

Reply via email to