GNOME Bugzilla – Bug 79231
Nautilus is hanging when you play the Mp3 files from the nautilus window .
Last modified: 2004-12-22 21:47:04 UTC
Build : Gnome 2.0 APril 15th 1) start nautilus. 2)Ensure that music files(".mp3" extension) are present in the current directory . 3)select view->view as music. 4)Click on music file from ths list and click on the play button in the playlist buttons. 5) while playing music file nautilus hangs . This is always reproducable in linux and solaris.
reproduced: after the song has played to the end the next action hangs nautilus.
If someone can get a stack trace of where it is hanging that would be useful.
Not punting, I don't think; something as big/'special' a feature/toy as this shouldn't hang the entire app.
Not only does this hang nautilus, but it prevents me from launching other gnome applications. I have to do a 'CTRL-ALT-F1' and execute a 'killall nautilus-music-view' before I can start any gnome applications.
Created attachment 8115 [details] I used gdb to attach to the hung nautilus-music-view. Here is the trace...
cc'ing Frederic as he may be able to spot the problem. It looks like Nautilus has a timeout callback that updates the display, and this is failing after a song has finished playing. Frederic, if you could look at esdout_playing () at esd-audio.c:231 (in nautilus/components/music), that would be helpful. It is hanging in the esd_send_auth() call (called by esd_open_sound()). Any idea why that would happen?
Confirming on my system.. But I don't have a clue on this problem : I don't know yet very well esound internal logic.. Adding Elliot as he probably knows it better
nautilus really needs to open its esd connection earlier on... Call gnome_sound_init() at startup, and then use gnome_sound_connection for your esound connection...
*** Bug 81381 has been marked as a duplicate of this bug. ***
cc'ing damon.
Created attachment 8792 [details] [review] Fixes this and several other problems
Basically someone seems to have been confused about what the esdout_playing() function was supposed to do. It was trying to connect to esd once per second, which was unnecessary and silly. So I split it into 2 functions, esdout_can_play() which checks that we can connect to esd, and esdout_playing() which checks if we are currently playing a track. That seems to fix the hang. The patch also fixes a crash when you control-click on a track, and updates the track labels properly when you click on the prev/next track buttons. And it fixes the timer thing used in the prev track button so it moves to the previous track if you're in the first 3 seconds of the current track. It was using 300 when it should be 3000.
patch looks good. please commit.
This is also a esound bug. The problem was that esound server was expecting more data than available at the end of the audio stream. Because of this esound was blocking reading socket. I've sent a patch to Frederic Crozat.
Ah, thanks for finding that. I've committed the nautilus patches, so I'll close this bug.
*** Bug 83946 has been marked as a duplicate of this bug. ***
*** Bug 73459 has been marked as a duplicate of this bug. ***
Tested on Solaris 9 - Sun beta 2 build 11 package, source taken from gnome-2-0 branch on Tue Oct 1 13:26:01 BST 2002. I coudn't simulate this bug. It can be closed.