[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bash crashes on SIGPIPE
From: |
Nikola Kržalić |
Subject: |
bash crashes on SIGPIPE |
Date: |
Tue, 14 Apr 2015 13:39:06 +0200 |
If I open a socket to local database:
exec 3<> /dev/tcp/127.0.0.1/6379
In netstat I can see the connection successfully established:
tcp 0 0 127.0.0.1:42662 127.0.0.1:6379
ESTABLISHED 2269/-bash
And then I proceed to send some data:
echo -e "*2\r\n$3\r\nGET\r\n$6\r\nmy_key\r\n" >&3
At this point the server application (as expected) complains about bad
syntax and terminates the TCP connection, socket goes into CLOSE_WAIT
state:
tcp 45 0 127.0.0.1:42662 127.0.0.1:6379
CLOSE_WAIT 2269/-bash
And if I decide to run echo again, bash simply crashes. Few times it
also terminated on first echo.
Bellow is the strace output. I'm running bash version 4.3.11 on Ubuntu
14.04.2 LTS.
write(2, "\10\10-e \"*2\\r\\n$3\\r\\nGET\\r\\n$6\\r\\nm"..., 46) = 46
read(0, "\r", 1) = 1
write(2, "\n", 1) = 1
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or
TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
ioctl(0, SNDCTL_TMR_STOP or SNDRV_TIMER_IOCTL_GINFO or TCSETSW,
{B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or
TCGETS, {B38400 opost isig icanon echo ...}) = 0
rt_sigaction(SIGINT, {0x45cf60, [], SA_RESTORER, 0x7f7c8015cd40},
{0x4a8580, [], SA_RESTORER, 0x7f7c8015cd40}, 8) = 0
rt_sigaction(SIGTERM, {0x45cb10, [], SA_RESTORER|SA_RESTART,
0x7f7c8015cd40}, {0x4a8580, [], SA_RESTORER, 0x7f7c8015cd40}, 8) = 0
rt_sigaction(SIGHUP, {0x45d1d0, [HUP INT ILL TRAP ABRT BUS FPE USR1
SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER,
0x7f7c8015cd40}, {0x4a8580, [], SA_RESTORER, 0x7f7c8015cd40}, 8) = 0
rt_sigaction(SIGALRM, {0x45d1d0, [HUP INT ILL TRAP ABRT BUS FPE USR1
SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], SA_RESTORER,
0x7f7c8015cd40}, {0x4a8580, [], SA_RESTORER, 0x7f7c8015cd40}, 8) = 0
rt_sigaction(SIGWINCH, {0x45cb00, [], SA_RESTORER, 0x7f7c8015cd40},
{0x4a7c00, [], SA_RESTORER|SA_RESTART, 0x7f7c8015cd40}, 8) = 0
rt_sigaction(SIGINT, {0x45cf60, [], SA_RESTORER, 0x7f7c8015cd40},
{0x45cf60, [], SA_RESTORER, 0x7f7c8015cd40}, 8) = 0
fcntl(1, F_GETFD) = 0
fcntl(1, F_DUPFD, 10) = 10
fcntl(1, F_GETFD) = 0
fcntl(10, F_SETFD, FD_CLOEXEC) = 0
dup2(3, 1) = 1
fcntl(3, F_GETFD) = 0
write(1, "*2\r\n", 4) = 4
write(1, "\r\n", 2) = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=4813, si_uid=0} ---
rt_sigprocmask(SIG_BLOCK, [CHLD TSTP TTIN TTOU], [HUP INT ILL TRAP
ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], 8) =
0
ioctl(255, SNDRV_TIMER_IOCTL_SELECT or TIOCSPGRP, [4813]) = 0
rt_sigprocmask(SIG_SETMASK, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV
USR2 PIPE ALRM TERM XCPU XFSZ VTALRM SYS], NULL, 8) = 0
setpgid(0, 4813) = -1 EPERM (Operation not permitted)
rt_sigaction(SIGPIPE, {SIG_DFL, [], SA_RESTORER, 0x7f7c8015cd40},
{0x45d1d0, [HUP INT ILL TRAP ABRT BUS FPE USR1 SEGV USR2 PIPE ALRM
TERM XCPU XFSZ VTALRM SYS], SA_RESTORER, 0x7f7c8015cd40}, 8) = 0
kill(4813, SIGPIPE) = 0
rt_sigreturn() = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=4813, si_uid=0} ---
+++ killed by SIGPIPE +++
--
Regards,
Nikola Kržalić.
- bash crashes on SIGPIPE,
Nikola Kržalić <=