[alsa-devel] alsactl segfault
There are reports of alsactl segfaulting:
https://bugzilla.redhat.com/show_bug.cgi?id=1335431 https://bugzilla.redhat.com/show_bug.cgi?id=1283737
Core was generated by `/usr/sbin/alsactl -s -n 19 -c -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --init'. Program terminated with signal SIGSEGV, Segmentation fault. #0 free_list (list=list@entry=0x20) at daemon.c:74 74 for (i = 0; i < list->size; i++)
Thread 1 (Thread 0x7fd798589700 (LWP 1015)): #0 free_list (list=list@entry=0x20) at daemon.c:74 i = 0 #1 0x000055e3c8704935 in card_free (card=0x55e3ca6c5018) at daemon.c:83 c = 0x0 #2 0x000055e3c87054a4 in state_daemon (file=0x55e3c8705ced "/var/lib/alsa/asound.state", cardname=0x0, period=300, pidfile=0x55e3c8705cbc "/var/run/alsactl.pid") at daemon.c:455 count = 2 pcount = <optimized out> psize = <optimized out> i = 1 j = <optimized out> k = <optimized out> changed = 0 last_write = 1463036017 now = 1463037368 revents = 0 cards = 0x55e3ca6c5010 pfd = <optimized out> pfdn = <optimized out> __FUNCTION__ = "state_daemon" #3 0x000055e3c86f90e7 in main (argc=<optimized out>, argv=<optimized out>) at alsactl.c:370 devfiles = {0x55e3c8705d08 "/dev/snd/controlC", 0x55e3c8705db3 "/dev/snd/pcmC", 0x55e3c8705dc1 "/dev/snd/midiC", 0x55e3c8705dd0 "/dev/snd/hwC", 0x0} cfgfile = 0x55e3c8705ced "/var/lib/alsa/asound.state" initfile = 0x7ffc87ee1f80 "/lib/alsa/init/00main" pidfile = 0x55e3c8705cbc "/var/run/alsactl.pid" cardname = 0x0 ncardname = "(\201Z\230\327\177\000\000\000\000\000\000\000\000\000" cmd = 0x7ffc87ee1f96 "rdaemon" tmp = <optimized out> removestate = 0 init_fallback = 1 period = 300 background = 0 daemoncmd = <optimized out> use_nice = 19 sched_idle = 1 o = <optimized out> j = <optimized out> k = <optimized out> res = 0 long_option = 0x0 short_option = 0x0
Any idea what might be causing this? Any other debug info that would be helpful? It doesn't crash all the time.
On Fri, 09 Sep 2016 23:33:04 +0200, Orion Poplawski wrote:
There are reports of alsactl segfaulting:
https://bugzilla.redhat.com/show_bug.cgi?id=1335431 https://bugzilla.redhat.com/show_bug.cgi?id=1283737
Core was generated by `/usr/sbin/alsactl -s -n 19 -c -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --init'. Program terminated with signal SIGSEGV, Segmentation fault. #0 free_list (list=list@entry=0x20) at daemon.c:74 74 for (i = 0; i < list->size; i++)
Thread 1 (Thread 0x7fd798589700 (LWP 1015)): #0 free_list (list=list@entry=0x20) at daemon.c:74 i = 0 #1 0x000055e3c8704935 in card_free (card=0x55e3ca6c5018) at daemon.c:83 c = 0x0 #2 0x000055e3c87054a4 in state_daemon (file=0x55e3c8705ced "/var/lib/alsa/asound.state", cardname=0x0, period=300, pidfile=0x55e3c8705cbc "/var/run/alsactl.pid") at daemon.c:455 count = 2 pcount = <optimized out> psize = <optimized out> i = 1 j = <optimized out> k = <optimized out> changed = 0 last_write = 1463036017 now = 1463037368 revents = 0 cards = 0x55e3ca6c5010 pfd = <optimized out> pfdn = <optimized out> __FUNCTION__ = "state_daemon" #3 0x000055e3c86f90e7 in main (argc=<optimized out>, argv=<optimized out>) at alsactl.c:370 devfiles = {0x55e3c8705d08 "/dev/snd/controlC", 0x55e3c8705db3 "/dev/snd/pcmC", 0x55e3c8705dc1 "/dev/snd/midiC", 0x55e3c8705dd0 "/dev/snd/hwC", 0x0} cfgfile = 0x55e3c8705ced "/var/lib/alsa/asound.state" initfile = 0x7ffc87ee1f80 "/lib/alsa/init/00main" pidfile = 0x55e3c8705cbc "/var/run/alsactl.pid" cardname = 0x0 ncardname = "(\201Z\230\327\177\000\000\000\000\000\000\000\000\000" cmd = 0x7ffc87ee1f96 "rdaemon" tmp = <optimized out> removestate = 0 init_fallback = 1 period = 300 background = 0 daemoncmd = <optimized out> use_nice = 19 sched_idle = 1 o = <optimized out> j = <optimized out> k = <optimized out> res = 0 long_option = 0x0 short_option = 0x0
Any idea what might be causing this? Any other debug info that would be helpful? It doesn't crash all the time.
The patch below should fix the issue. Give it a try.
Takashi
--- diff --git a/alsactl/daemon.c b/alsactl/daemon.c index 127701efaf0f..4f0a935a3987 100644 --- a/alsactl/daemon.c +++ b/alsactl/daemon.c @@ -451,8 +451,10 @@ save: out: free(pfd); remove(pidfile); - for (i = 0; i < count; i++) - card_free(&cards[i]); - free(cards); + if (cards) { + for (i = 0; i < count; i++) + card_free(&cards[i]); + free(cards); + } return 0; }
On 09/11/2016 02:18 AM, Takashi Iwai wrote:
On Fri, 09 Sep 2016 23:33:04 +0200, Orion Poplawski wrote:
There are reports of alsactl segfaulting:
https://bugzilla.redhat.com/show_bug.cgi?id=1335431 https://bugzilla.redhat.com/show_bug.cgi?id=1283737
Any idea what might be causing this? Any other debug info that would be helpful? It doesn't crash all the time.
The patch below should fix the issue. Give it a try.
Takashi
That looks promising. I'll give it a try and report back. May take a bit though as I'm not sure how often it crashed before. Thanks!
participants (2)
-
Orion Poplawski
-
Takashi Iwai