You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Nick Andrew (JIRA)" <ji...@apache.org> on 2014/11/03 05:09:34 UTC

[jira] [Updated] (MESOS-2026) SIGPIPE on logging fd causes endless loop

     [ https://issues.apache.org/jira/browse/MESOS-2026?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nick Andrew updated MESOS-2026:
-------------------------------
    Description: 
If the slave writes to STDERR and the other end has closed the pipe, the slave will receive SIGPIPE, and it logs that by writing a line to STDERR, which causes SIGPIPE, and so on forever.

strace output:

{{monospaced}}
write(2, "W1103 03:53:43.602411 17597 glog.hpp:52] RAW: Received signal SIGPIPE; escalating to SIGABRT\n", 93) = -1 EPIPE (Broken pipe)
tgkill(22346, 17597, SIGABRT)           = -1 ESRCH (No such process)
rt_sigreturn()                          = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=17597, si_uid=0} ---
gettid()                                = 17597
write(2, "W1103 03:53:43.602411 17597 glog.hpp:52] RAW: Received signal SIGPIPE; escalating to SIGABRT\n", 93) = -1 EPIPE (Broken pipe)
tgkill(22346, 17597, SIGABRT)           = -1 ESRCH (No such process)
rt_sigreturn()                          = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=17597, si_uid=0} ---
gettid()                                = 17597
write(2, "W1103 03:53:43.602411 17597 glog.hpp:52] RAW: Received signal SIGPIPE; escalating to SIGABRT\n", 93) = -1 EPIPE (Broken pipe)
tgkill(22346, 17597, SIGABRT)           = -1 ESRCH (No such process)
rt_sigreturn()                          = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=17597, si_uid=0} ---
gettid()                                = 17597
{{monospaced}}

I have no idea how the pipe was closed in the first place, but a looping slave is not good.

  was:
If the slave writes to STDERR and the other end has closed the pipe, the slave will receive SIGPIPE, and it logs that by writing a line to STDERR, which causes SIGPIPE, and so on forever.

strace output:

```
write(2, "W1103 03:53:43.602411 17597 glog.hpp:52] RAW: Received signal SIGPIPE; escalating to SIGABRT\n", 93) = -1 EPIPE (Broken pipe)
tgkill(22346, 17597, SIGABRT)           = -1 ESRCH (No such process)
rt_sigreturn()                          = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=17597, si_uid=0} ---
gettid()                                = 17597
write(2, "W1103 03:53:43.602411 17597 glog.hpp:52] RAW: Received signal SIGPIPE; escalating to SIGABRT\n", 93) = -1 EPIPE (Broken pipe)
tgkill(22346, 17597, SIGABRT)           = -1 ESRCH (No such process)
rt_sigreturn()                          = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=17597, si_uid=0} ---
gettid()                                = 17597
write(2, "W1103 03:53:43.602411 17597 glog.hpp:52] RAW: Received signal SIGPIPE; escalating to SIGABRT\n", 93) = -1 EPIPE (Broken pipe)
tgkill(22346, 17597, SIGABRT)           = -1 ESRCH (No such process)
rt_sigreturn()                          = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=17597, si_uid=0} ---
gettid()                                = 17597
```

I have no idea how the pipe was closed in the first place, but a looping slave is not good.


> SIGPIPE on logging fd causes endless loop
> -----------------------------------------
>
>                 Key: MESOS-2026
>                 URL: https://issues.apache.org/jira/browse/MESOS-2026
>             Project: Mesos
>          Issue Type: Bug
>          Components: slave
>    Affects Versions: 0.20.1
>            Reporter: Nick Andrew
>            Priority: Minor
>
> If the slave writes to STDERR and the other end has closed the pipe, the slave will receive SIGPIPE, and it logs that by writing a line to STDERR, which causes SIGPIPE, and so on forever.
> strace output:
> {{monospaced}}
> write(2, "W1103 03:53:43.602411 17597 glog.hpp:52] RAW: Received signal SIGPIPE; escalating to SIGABRT\n", 93) = -1 EPIPE (Broken pipe)
> tgkill(22346, 17597, SIGABRT)           = -1 ESRCH (No such process)
> rt_sigreturn()                          = -1 EPIPE (Broken pipe)
> --- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=17597, si_uid=0} ---
> gettid()                                = 17597
> write(2, "W1103 03:53:43.602411 17597 glog.hpp:52] RAW: Received signal SIGPIPE; escalating to SIGABRT\n", 93) = -1 EPIPE (Broken pipe)
> tgkill(22346, 17597, SIGABRT)           = -1 ESRCH (No such process)
> rt_sigreturn()                          = -1 EPIPE (Broken pipe)
> --- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=17597, si_uid=0} ---
> gettid()                                = 17597
> write(2, "W1103 03:53:43.602411 17597 glog.hpp:52] RAW: Received signal SIGPIPE; escalating to SIGABRT\n", 93) = -1 EPIPE (Broken pipe)
> tgkill(22346, 17597, SIGABRT)           = -1 ESRCH (No such process)
> rt_sigreturn()                          = -1 EPIPE (Broken pipe)
> --- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=17597, si_uid=0} ---
> gettid()                                = 17597
> {{monospaced}}
> I have no idea how the pipe was closed in the first place, but a looping slave is not good.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)