Le problème vient probablement de synchronized (this.audioInputStream). Je suppose qu'il s'agit d'une instance de org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLin

Envoyé par
Patrice Henrio
Où se trouvent les indications qui permettent de comprendre que c'est la méthode stop qui est en cause ?
Found one Java-level deadlock:
=============================
"Lecteur MP3":
waiting to lock monitor 0x8b00b218 (object 0xa934cae8, a org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine),
which is held by "AWT-EventQueue-0"
"AWT-EventQueue-0":
waiting to lock monitor 0x8b00a534 (object 0x93c39970, a java.lang.Object),
which is held by "Lecteur MP3"
Java stack information for the threads listed above:
===================================================
"Lecteur MP3":
at org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine.write(PulseAudioSourceDataLine.java:183)
- waiting to lock <0xa934cae8> (a org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine)
- locked <0x93c39970> (a java.lang.Object)
at memory.lecteur.LecteurMP3.run(LecteurMP3.java:636)
- locked <0xa921fa98> (a memory.lecteur.javazoom.spi.mpeg.sampled.convert.DecodedMpegAudioInputStream)
at java.lang.Thread.run(Thread.java:724)
"AWT-EventQueue-0":
at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.stop(PulseAudioDataLine.java:386)
- waiting to lock <0x93c39970> (a java.lang.Object)
- locked <0xa934cae8> (a org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine)
at org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine.stop(PulseAudioSourceDataLine.java:51)
at memory.lecteur.LecteurMP3.pausePlayback(LecteurMP3.java:381)
at memory.lecteur.LecteurMP3.pause(LecteurMP3.java:841)
at memory.chants.JLecteurMP3.pauseChant(JLecteurMP3.java:409)
at memory.chants.JLecteurMP3.actionPerformed(JLecteurMP3.java:336)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
...
Found 1 deadlock.
Ce n'est pas les méthode stop() ou write() qui sont en cause, ce sont tes méthodes pausePlayback() et run() qui le sont, dans la manière d'appeler les méthodes de PulseAudioSourceDataLine et synchroniser sur l'instance de cette classe.
Partager