Commit 1b045d06 authored by J. Alexander Treuman's avatar J. Alexander Treuman

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
parent 752bf24b
......@@ -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);
}
}
......
......@@ -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();
......
......@@ -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;
}
}
......
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment