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ć.