aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ. Alexander Treuman <jat@spatialrift.net>2007-08-27 21:18:35 +0000
committerJ. Alexander Treuman <jat@spatialrift.net>2007-08-27 21:18:35 +0000
commit1b045d0672cb1a069efd2d150d81ae3d5253ada5 (patch)
tree39080f9f722639ffef7b98441942052c9d5e4025
parent752bf24b7475d89e97a450bab353f3a1892a1ce0 (diff)
downloadmpd-1b045d0672cb1a069efd2d150d81ae3d5253ada5.tar.gz
mpd-1b045d0672cb1a069efd2d150d81ae3d5253ada5.tar.xz
mpd-1b045d0672cb1a069efd2d150d81ae3d5253ada5.zip
removing debug messages from signal handlers
As unfortunate as it is to remove such useful debugging messages, it's necessary to fix a potential deadlock with signal handling. A bunch of functions the debug functions call aren't safe to call from a signal handler. There are some alternate solutions, but they're neither pretty nor simple. So just remove them entirely for now. git-svn-id: https://svn.musicpd.org/mpd/trunk@6828 09075e82-0dd4-0310-85a5-a0d7c8717e4f
-rw-r--r--src/decode.c8
-rw-r--r--src/directory.c14
-rw-r--r--src/player.c4
-rw-r--r--src/sig_handlers.c2
4 files changed, 18 insertions, 10 deletions
diff --git a/src/decode.c b/src/decode.c
index d32799d31..bf3e1cb25 100644
--- a/src/decode.c
+++ b/src/decode.c
@@ -44,23 +44,25 @@ void decodeSigHandler(int sig, siginfo_t * si, void *v)
if (sig == SIGCHLD) {
int status;
if (decode_pid == wait3(&status, WNOHANG, NULL)) {
+ /*
if (WIFSIGNALED(status)) {
if (WTERMSIG(status) != SIGTERM) {
ERROR("decode process died from "
"signal: %i\n", WTERMSIG(status));
}
}
+ */
decode_pid = 0;
getPlayerData()->playerControl.decode_pid = 0;
}
} else if (sig == SIGTERM) {
int pid = decode_pid;
if (pid > 0) {
- DEBUG("player (or child) got SIGTERM\n");
+ /* DEBUG("player (or child) got SIGTERM\n"); */
kill(pid, SIGCONT);
kill(pid, SIGTERM);
- } else
- DEBUG("decoder (or child) got SIGTERM\n");
+ } /* else
+ DEBUG("decoder (or child) got SIGTERM\n"); */
exit(EXIT_SUCCESS);
}
}
diff --git a/src/directory.c b/src/directory.c
index adfd1f238..2a7e37def 100644
--- a/src/directory.c
+++ b/src/directory.c
@@ -130,20 +130,22 @@ void directory_sigChldHandler(int pid, int status)
{
if (directory_updatePid == pid) {
if (WIFSIGNALED(status) && WTERMSIG(status) != SIGTERM) {
- ERROR("update process died from a "
- "non-TERM signal: %i\n", WTERMSIG(status));
+ /* ERROR("update process died from a "
+ "non-TERM signal: %i\n", WTERMSIG(status)); */
} else if (!WIFSIGNALED(status)) {
switch (WEXITSTATUS(status)) {
case DIRECTORY_UPDATE_EXIT_UPDATE:
directory_reReadDB = 1;
- DEBUG("directory_sigChldHandler: "
- "updated db\n");
+ /* DEBUG("directory_sigChldHandler: "
+ "updated db\n"); */
case DIRECTORY_UPDATE_EXIT_NOUPDATE:
- DEBUG("directory_sigChldHandler: "
- "update exited succesffully\n");
+ /* DEBUG("directory_sigChldHandler: "
+ "update exited succesffully\n"); */
break;
+ /*
default:
ERROR("error updating db\n");
+ */
}
}
clearUpdatePid();
diff --git a/src/player.c b/src/player.c
index e84f31828..6ae46eded 100644
--- a/src/player.c
+++ b/src/player.c
@@ -85,6 +85,7 @@ void player_sigChldHandler(int pid, int status)
{
if (player_pid == pid)
{
+ /*
DEBUG("SIGCHLD caused by player process\n");
if (WIFSIGNALED(status) &&
WTERMSIG(status) != SIGTERM &&
@@ -93,17 +94,20 @@ void player_sigChldHandler(int pid, int status)
ERROR("player process died from signal: %i\n",
WTERMSIG(status));
}
+ */
resetPlayer();
}
else if (pid == getPlayerData()->playerControl.decode_pid &&
player_pid <= 0)
{
+ /*
if (WIFSIGNALED(status) && WTERMSIG(status) != SIGTERM)
{
ERROR("(caught by master parent) "
"decode process died from a "
"non-TERM signal: %i\n", WTERMSIG(status));
}
+ */
getPlayerData()->playerControl.decode_pid = 0;
}
}
diff --git a/src/sig_handlers.c b/src/sig_handlers.c
index fc29d2522..e092f51e7 100644
--- a/src/sig_handlers.c
+++ b/src/sig_handlers.c
@@ -62,7 +62,7 @@ static void chldSigHandler(int signal)
{
int status;
int pid;
- DEBUG("main process got SIGCHLD\n");
+ /* DEBUG("main process got SIGCHLD\n"); */
while (0 != (pid = wait3(&status, WNOHANG, NULL))) {
if (pid < 0) {
if (errno == EINTR)