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)