[alsa-devel] [PATCH utils 2/2] aplay: Fix uninterruptible aplay

Takashi Iwai tiwai at suse.de
Wed Apr 29 18:05:50 CEST 2015


When aplay is invoked to play from stdin, it can't be terminated by
normal signals like SIGTERM or SIGINT.  It's because our signal
handler tries to trap as much as possible while the stalling point is
not in the PCM loop but rather the file I/O.

For fixing this, leave our signal handler once when a signal is
received and snd_pcm_abort() is called.  At the next hit, it shall be
handled normally.

Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 aplay/aplay.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/aplay/aplay.c b/aplay/aplay.c
index dfa1a0a95867..459f7dd6f667 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -399,7 +399,7 @@ static void signal_handler(int sig)
 		handle = NULL;
 		prg_exit(EXIT_FAILURE);
 	}
-	signal(sig, signal_handler);
+	signal(sig, SIG_DFL);
 }
 
 /* call on SIGUSR1 signal. */
-- 
2.3.6



More information about the Alsa-devel mailing list