Jaroslav Kysela 88496d
From 4c09aaa5c13c2260fea57a89c47f88252da8a692 Mon Sep 17 00:00:00 2001
Jaroslav Kysela 88496d
From: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela 88496d
Date: Wed, 2 Nov 2011 17:27:47 +0100
Jaroslav Kysela 88496d
Subject: [PATCH] alsamixer: Fix X-win related crash for PulseAudio plugin
Jaroslav Kysela 88496d
 (bad linking)
Jaroslav Kysela 88496d
Jaroslav Kysela 88496d
A lot of reports that alsamixer crashes in X terminal when the PulseAudio
Jaroslav Kysela 88496d
CTL plugin is activated were entered to the tracking systems.
Jaroslav Kysela 88496d
Jaroslav Kysela 88496d
I figured that there is a linking clash for the shutdown() function.
Jaroslav Kysela 88496d
The shutdown() function in glibc is socket related, but the alsamixer code
Jaroslav Kysela 88496d
redefines this function and appearently that under some linking
Jaroslav Kysela 88496d
circumstances - which PA client invokes during the runtime dynamic linking
Jaroslav Kysela 88496d
- the wrong function is called.
Jaroslav Kysela 88496d
Jaroslav Kysela 88496d
This patch, for safety, renames the shutdown() function from alsamixer
Jaroslav Kysela 88496d
to app_shutdown(), but it might make sense to figure the real linking
Jaroslav Kysela 88496d
culprit to avoid future surprises.
Jaroslav Kysela 88496d
Jaroslav Kysela 88496d
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela 88496d
---
Jaroslav Kysela 88496d
 alsamixer/cli.c      |    2 +-
Jaroslav Kysela 88496d
 alsamixer/die.c      |    4 ++--
Jaroslav Kysela 88496d
 alsamixer/mainloop.c |    2 +-
Jaroslav Kysela 88496d
 alsamixer/mainloop.h |    2 +-
Jaroslav Kysela 88496d
 4 files changed, 5 insertions(+), 5 deletions(-)
Jaroslav Kysela 88496d
Jaroslav Kysela 88496d
diff --git a/alsamixer/cli.c b/alsamixer/cli.c
Jaroslav Kysela 88496d
index 3898196..bb4f030 100644
Jaroslav Kysela 88496d
--- a/alsamixer/cli.c
Jaroslav Kysela 88496d
+++ b/alsamixer/cli.c
Jaroslav Kysela 88496d
@@ -130,6 +130,6 @@ int main(int argc, char *argv[])
Jaroslav Kysela 88496d
 
Jaroslav Kysela 88496d
 	mainloop();
Jaroslav Kysela 88496d
 
Jaroslav Kysela 88496d
-	shutdown();
Jaroslav Kysela 88496d
+	app_shutdown();
Jaroslav Kysela 88496d
 	return 0;
Jaroslav Kysela 88496d
 }
Jaroslav Kysela 88496d
diff --git a/alsamixer/die.c b/alsamixer/die.c
Jaroslav Kysela 88496d
index dcd8536..899a501 100644
Jaroslav Kysela 88496d
--- a/alsamixer/die.c
Jaroslav Kysela 88496d
+++ b/alsamixer/die.c
Jaroslav Kysela 88496d
@@ -26,14 +26,14 @@
Jaroslav Kysela 88496d
 
Jaroslav Kysela 88496d
 void fatal_error(const char *msg)
Jaroslav Kysela 88496d
 {
Jaroslav Kysela 88496d
-	shutdown();
Jaroslav Kysela 88496d
+	app_shutdown();
Jaroslav Kysela 88496d
 	fprintf(stderr, "%s\n", msg);
Jaroslav Kysela 88496d
 	exit(EXIT_FAILURE);
Jaroslav Kysela 88496d
 }
Jaroslav Kysela 88496d
 
Jaroslav Kysela 88496d
 void fatal_alsa_error(const char *msg, int err)
Jaroslav Kysela 88496d
 {
Jaroslav Kysela 88496d
-	shutdown();
Jaroslav Kysela 88496d
+	app_shutdown();
Jaroslav Kysela 88496d
 	fprintf(stderr, _("%s: %s\n"), msg, snd_strerror(err));
Jaroslav Kysela 88496d
 	exit(EXIT_FAILURE);
Jaroslav Kysela 88496d
 }
Jaroslav Kysela 88496d
diff --git a/alsamixer/mainloop.c b/alsamixer/mainloop.c
Jaroslav Kysela 88496d
index eddaf3b..dbfef9b 100644
Jaroslav Kysela 88496d
--- a/alsamixer/mainloop.c
Jaroslav Kysela 88496d
+++ b/alsamixer/mainloop.c
Jaroslav Kysela 88496d
@@ -52,7 +52,7 @@ void initialize_curses(bool use_color)
Jaroslav Kysela 88496d
 	snd_lib_error_set_handler(black_hole_error_handler);
Jaroslav Kysela 88496d
 }
Jaroslav Kysela 88496d
 
Jaroslav Kysela 88496d
-void shutdown(void)
Jaroslav Kysela 88496d
+void app_shutdown(void)
Jaroslav Kysela 88496d
 {
Jaroslav Kysela 88496d
 	if (curses_initialized) {
Jaroslav Kysela 88496d
 		clear();
Jaroslav Kysela 88496d
diff --git a/alsamixer/mainloop.h b/alsamixer/mainloop.h
Jaroslav Kysela 88496d
index 0cfc989..22317be 100644
Jaroslav Kysela 88496d
--- a/alsamixer/mainloop.h
Jaroslav Kysela 88496d
+++ b/alsamixer/mainloop.h
Jaroslav Kysela 88496d
@@ -5,6 +5,6 @@
Jaroslav Kysela 88496d
 
Jaroslav Kysela 88496d
 void initialize_curses(bool use_color);
Jaroslav Kysela 88496d
 void mainloop(void);
Jaroslav Kysela 88496d
-void shutdown(void);
Jaroslav Kysela 88496d
+void app_shutdown(void);
Jaroslav Kysela 88496d
 
Jaroslav Kysela 88496d
 #endif
Jaroslav Kysela 88496d
-- 
Jaroslav Kysela 88496d
1.7.6.4
Jaroslav Kysela 88496d