[systemd-devel] [systemd-nspawn] nginx: [emerg] open() "/dev/stderr" failed (6: No such device or address)

Mantas Mikulėnas grawity at gmail.com
Fri Apr 24 06:51:27 PDT 2015


On Fri, Apr 24, 2015 at 4:24 PM, Lennart Poettering
<lennart at poettering.net> wrote:
> On Fri, 24.04.15 12:06, Peter Paule (systemd-devel at fedux.org) wrote:
>
>> Hi,
>>
>> I run nginx in a CentOS 7.0 container via systemd-nspawn. nginx logs to
>> stderr/stdout via configuration to capture logs via journald.
>>
>> nginx.conf
>>
>>   error_log  /dev/stderr warn;
>>
>>
>> If I use systemd 219-1 (-1 is the package number of Arch Linux) which seems
>> to be a non-patched systemd 219, everything is fine. If I upgrade to systemd
>> 219-6, nginx cannot be started via systemd-nspawn. systemd 219-6 includes
>> this patch "https://projects.archlinux.org/svntogit/packages.git/tree/repos/core-x86_64/0001-nspawn-when-connected-to-pipes-for-stdin-stdout-pass.patch?h=packages/systemd".
>> BTW: I see the same error if I use systemd-git-HEAD.
>>
>> I see the following errors in journal - I tried bot "stderr" and "stdout".
>>
>>   Apr 24 04:48:12 server systemd-nspawn[421]: nginx: [emerg] open()
>> "/dev/stdout" failed (6: No such device or address)
>>   Apr 24 04:48:45 server systemd-nspawn[496]: nginx: [emerg] open()
>> "/dev/stderr" failed (6: No such device or address)
>
> Any idea what the precise syscall is that triggers that? i.e. what
> strace says?

It kind of makes sense when stdout is a socket, since
open(/dev/stdout) or open(/proc/self/fd/*) doesn't just dup that fd,
it tries to open the file anew (including permission checks and
everything). A bit annoying.

-- 
Mantas Mikulėnas <grawity at gmail.com>


More information about the systemd-devel mailing list