forked from luck/tmp_suning_uos_patched
27423257b7
Sometimes PORT_EXIT messages are lost when a process is exiting. This happens if you subscribe to the announce port with client A, then subscribe to the announce port with client B, then kill client A. Client B will not see the PORT_EXIT message because client A's port is closing and is earlier in the announce port subscription list. The for each loop will try to send the announcement to client A and fail, then will stop trying to broadcast to other ports. Killing B works fine since the announcement will already have gone to A. The CLIENT_EXIT message does not get lost. How to reproduce problem: *** termA $ aseqdump -p 0:1 0:1 Port subscribed 0:1 -> 128:0 *** termB $ aseqdump -p 0:1 *** termA 0:1 Client start client 129 0:1 Port start 129:0 0:1 Port subscribed 0:1 -> 129:0 *** termB 0:1 Port subscribed 0:1 -> 129:0 *** termA ^C *** termB 0:1 Client exit client 128 <--- expected Port exit as well (before client exit) Signed-off-by: Adam Goode <agoode@google.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> |
||
---|---|---|
.. | ||
oss | ||
seq | ||
compress_offload.c | ||
control_compat.c | ||
control.c | ||
ctljack.c | ||
device.c | ||
hrtimer.c | ||
hwdep_compat.c | ||
hwdep.c | ||
info_oss.c | ||
info.c | ||
init.c | ||
isadma.c | ||
jack.c | ||
Kconfig | ||
Makefile | ||
memalloc.c | ||
memory.c | ||
misc.c | ||
pcm_compat.c | ||
pcm_dmaengine.c | ||
pcm_lib.c | ||
pcm_memory.c | ||
pcm_misc.c | ||
pcm_native.c | ||
pcm_timer.c | ||
pcm.c | ||
rawmidi_compat.c | ||
rawmidi.c | ||
rtctimer.c | ||
sgbuf.c | ||
sound_oss.c | ||
sound.c | ||
timer_compat.c | ||
timer.c | ||
vmaster.c |