So it seems that s6-log does not like buffered output. I modified doorknob to vsnprintf into a buffer and then tried various output methods.
1. puts(msg) Failed as expected (basically the same as vprintf). 2. write(1, msg, strlen(msg)) Worked! So non-buffered ok. 3. fputs(msg, stderr) Then add `fdmove -c 2 1' to the run file works! So fdmove seems to fix things up. Which is probably why most people don't see this problem. Obviously, for 2 and 3 I did a strcat(msg, "\n"). So I think I will go with 2, but to stderr to follow Jonathan de Boyne Pollard's comment "Unix conventions: Logs go to standard error". Thanks everybody for the input. I probably would not have suspected the buffered output was a problem. Cheers, Sean