I see that the deadlock is between AudioMixerMediaDevice.MediaStreamMediaDeviceSession.streamAudioLevelListenerLock and MediaDeviceSession.playbacks. Consequently, I don't think that modifying MediaStreamImpl.update to not hold a lock over the receiveStreams List will fix the issue.
Anyway, I modified the synchronization strategies of both MediaStreamImpl.receiveStreams and MediaDeviceSession.playbacks and I think the latter does address the deadlock. I'll commit it tomorrow after more testing.
On 20.02.2014 09:39, Ingo Bauersachs wrote:
I was wondering if the method
org.jitsi.impl.neomedia.MediaStreamImpl.update needs hold the lock over the
receiveStreams-List while adding the stream to the device session?
(MediaStreamImpl lines 2430-2433 and 2463-2466)