OSDN Git Service

dmix: Don't use assert() and abort()
authorTakashi Iwai <tiwai@suse.de>
Wed, 27 Nov 2013 08:37:54 +0000 (09:37 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 27 Nov 2013 08:37:54 +0000 (09:37 +0100)
We seem to still have some races at closing a dmix stream, but
aborting is the worst option.  Let's make not melt down.

Reference: https://bugzilla.novell.com/show_bug.cgi?id=852446
Signed-off-by: Takashi Iwai <tiwai@suse.de>
src/pcm/pcm_direct.h

index 70c2c6a..5ae39c0 100644 (file)
@@ -274,8 +274,8 @@ static inline int snd_pcm_direct_semaphore_up(snd_pcm_direct_t *dmix, int sem_nu
 static inline int snd_pcm_direct_semaphore_final(snd_pcm_direct_t *dmix, int sem_num)
 {
        if (dmix->locked[sem_num] != 1) {
-               assert(dmix->locked[sem_num] != 1);
-               abort();
+               SNDMSG("invalid semaphore count to finalize %d: %d", sem_num, dmix->locked[sem_num]);
+               return -EBUSY;
        }
        return snd_pcm_direct_semaphore_up(dmix, sem_num);
 }