SRU Request: libshout3 in intrepid

Bug #304843 reported by Sean McNamara
8
Affects Status Importance Assigned to Milestone
libshout (Debian)
Fix Released
Unknown
libshout (Ubuntu)
Fix Released
Undecided
Unassigned
Intrepid
Fix Released
Undecided
Martin Pitt

Bug Description

Binary package hint: libshout3

This issue is related to Debian bug 490070:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=490070

Affected Applications:
1. DarkIce
2. liquidsoap
3. idjc
4. Development versions of mpd
5. xmms2-plugin-ices
6. vlc-nox
7. ezstream
8. gstreamer-plugins-good (and any applications that stream using gstreamer, such as flumotion)

The history is thus:

1. Intrepid pulled in a Debian update to libshout3, version 2.2.2-4, which purported to fix an issue for some user. This "fix" has no documented advantages, but it has a *major* regression: the mp3 streaming functionality of libshout3 is completely broken.

The only change is in src/mp3.c, line 320:
- if(mh->layer != 2)
+ if(mh->layer != 2 || mh->layer != 1)

If the statement is true, the function returns silently with a 0 exit code, indicating success. However, the stream is not actually sent.

2. In Jaunty, we pulled in the Debian update to libshout3 2.2.2-5. The *only* change in this package update is that one line of code is reverted back to the original.

The end-user impact is thus:
1. In Intrepid, all of the above "Affected Applications" can not stream mp3 data to an icecast/icecast2 server.

I am requesting a Stable Release Update (SRU) for this problem. I have read the guidelines at https://wiki.ubuntu.com/StableReleaseUpdates and believe this satisfies the criteria as follows:

1. "Bugs which represent severe regressions from the previous release of Ubuntu. This includes packages which are totally unusable, like being uninstallable or crashing on startup."
2. "Bugs which do not fit under above categories, but (1) have an obviously safe patch and (2) affect an application rather than critical infrastructure packages (like X.org or the kernel)." Both (1) and (2).
3. The bug is indeed fixed in Jaunty. libshout3 2.2.2-5.
4. libshout3 2.2.2-5 does not make any other changes besides this one fix, and the original sources have not changed.

TEST CASE:
1. Install icecast2, gstreamer0.10-plugins-good, gstreamer0.10-plugins-ugly-multiverse, and gstreamer0.10-tools.
2. Configure icecast2 to have an mp3 mount point, by editing /etc/icecast2/icecast.xml. For example, add the following lines within the <icecast></icecast> element:
<mount>
        <mount-name>/test.mp3</mount-name>
<username>source</username>
<password>bugtest</password>
<max-listeners>1</max-listeners>
<burst-size>65536</burst-size>
<hidden>1</hidden>
<no-yp>1</no-yp>
    </mount>
3. Edit /etc/default/icecast2 and uncomment the line reading "ENABLE=true".
4. Start icecast2 by running `sudo /etc/init.d/icecast2 start`
5. Launch these three commands in sequence, as a user (not root):
`gst-launch-0.10 audiotestsrc ! audioconvert ! lame ! shout2send ip=localhost port=8000 password=bugtest username=source mount=/test.mp3 &`
`sleep 5`
`gst-launch-0.10 souphttpsrc location=http://localhost:8000/test.mp3 ! decodebin2 ! audioconvert ! autoaudiosink`

You should *not* hear sound, if you are running Ubuntu Intrepid and thus using libshout3 2.2.2-4. You may also receive an error message.
If you are running any other version of Ubuntu, you *should* hear sound (a tone similar to what you hear when you do an audio test in Gnome's Sound panel). Press Ctrl+C to stop.

Revision history for this message
Sean McNamara (smcnam) wrote :
Revision history for this message
Martin Pitt (pitti) wrote :

Fixed in Jaunty.

Changed in libshout:
status: New → Fix Released
Revision history for this message
Martin Pitt (pitti) wrote :

Uploaded to intrepid-proposed, thanks for your research!

Changed in libshout:
assignee: nobody → pitti
status: New → In Progress
Revision history for this message
Martin Pitt (pitti) wrote :

Accepted into intrepid-proposed, please test and give feedback here. Please see https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you in advance!

Changed in libshout:
status: In Progress → Fix Committed
Revision history for this message
Sean McNamara (smcnam) wrote :

I'm not seeing this upgrade in intrepid-proposed, not sure why. I tried an aptitude update, still no dice. Maybe I'm not configuring it right. I don't even see it in http://people.ubuntu.com/~ubuntu-archive/pending-sru.html

Any suggestions?

Thanks, Martin, for picking up the gauntlet on this problem. This will alleviate some support problems with the upcoming mpd 0.14 release, as some people may try to compile it on an Intrepid installation, considering the popularity of Ubuntu.

Revision history for this message
Martin Pitt (pitti) wrote : Re: [Bug 304843] Re: SRU Request: libshout3 in intrepid

Sean McNamara [2008-12-07 22:22 -0000]:
> I'm not seeing this upgrade in intrepid-proposed, not sure why.

It always takes a couple of hours to build, get published, and
propagate to the mirrors.

Revision history for this message
Sean McNamara (smcnam) wrote :

OK, it appears the change is now available in intrepid-proposed.

I *removed* the custom-compiled version of /usr/lib/libshout3.so.3.2.0 that I had built, and then updated this package, on a (non-clean) Ubuntu Server x86_64 8.10. I then pulled in the intrepid-proposed update. I modified the last step of the testcase as follows:

`gst-launch-0.10 souphttpsrc location=http://localhost:8000/test.mp3 ! decodebin2 ! audioconvert ! filesrc location=~/playback.mp3`

This is useful for systems which do not have an available sound card (audio sink). I let this run for a few seconds, which produced the following file using the corrected library:

http://tiyukquellmalz.org/playback.mp3

I will now run through the entire original Test Case on my local desktop system, using a clean installation of Ubuntu 8.10 x86 Desktop. Per procedure, I'll pull in -security and -updates first, then test and note the failure; then I'll enable intrepid-proposed for this package, grab the update, and (hopefully) report success. Stay tuned.

Thanks,

Sean

Revision history for this message
Sean McNamara (smcnam) wrote :
Download full text (3.3 KiB)

I've now performed the test on the Ubuntu 8.10 x86 Desktop machine as promised. This is a clean install with no modifications other than, upon first boot,

I forgot to include in my test case instructions that gstreamer0.10-plugins-ugly needs to be installed for mp3 playback. As part of the list of packages you install, gstreamer0.10-plugins-ugly should be added to that.

Also, your tests will fail if your installation of Ubuntu is unable to play sound through your desired output device (speakers, USB audio, etc.) using Rhythmbox or the GNOME Sound tests. If these fail, you should troubleshoot your sound setup, which is out of the scope of this test.

Here is only the clean install modification I made before I began the test:

sudo aptitude update; sudo aptitude full-upgrade; sudo reboot

Here's a record of what happens before enabling intrepid-proposed:

root@vk4rms:/home/sean# nano /etc/icecast2/icecast.xml
root@vk4rms:/home/sean# nano /etc/default/icecast2
root@vk4rms:/home/sean# /etc/init.d/icecast2 start
Starting icecast2: Starting icecast2
Detaching from the console
icecast2.
root@vk4rms:/home/sean# exit
exit
sean@vk4rms:~$ gst-launch-0.10 audiotestsrc ! audioconvert ! lame ! shout2send ip=localhost port=8000 password=bugtest username=source mount=/test.mp3 &
[1] 7292
sean@vk4rms:~$ Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock

sean@vk4rms:~$ gst-launch-0.10 souphttpsrc location=http://localhost:8000/test.mp3 ! decodebin2 ! audioconvert ! autoaudiosink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0: "http://localhost:8000/test.mp3": File Not Found
Additional debug info:
gstsouphttpsrc.c(916): gst_soup_http_src_parse_status (): /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0:
404 File Not Found
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
FREEING pipeline ...

This is as expected; the stream never makes it to the icecast2 server.

Here is a record of what happens after enabling intrepid-proposed, and running `sudo aptitude -t intrepid-proposed`, selecting libshout3, and installing it.

sean@vk4rms:~$ killall gst-launch-0.10
sean@vk4rms:~$ sudo aptitude install gstreamer0.10-plugins-ugly
sean@vk4rms:~$ gst-launch-0.10 audiotestsrc ! audioconvert ! lame ! shout2send ip=localhost port=8000 password=bugtest username=source mount=/test.mp3 &
[1] 7705
sean@vk4rms:~$ Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
sean@vk4rms:~$ gst-launch-0.10 souphttpsrc location=http://localhost:8000/test.mp3 ! decodebin2 ! audioconvert ! autoaudiosink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
^CCaught interrupt -- handling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 93011803106 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
FREEING pipeline ...

I hear a tone in my speakers. All is working a...

Read more...

Revision history for this message
Martin Pitt (pitti) wrote :

Thank you for your detailled testing feedback! I consider this verified.

This will sit in -proposed for 7 days, and move to -updates if we don't hear any other problem reports.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package libshout - 2.2.2-4ubuntu1

---------------
libshout (2.2.2-4ubuntu1) intrepid-proposed; urgency=high

  * Dropped invalid patch to allow mpeg layer III, to unbreak icecast
    mp3 streaming. (LP: #304843, Debian #490070)

 -- Martin Pitt <email address hidden> Sun, 07 Dec 2008 12:44:35 -0800

Changed in libshout:
status: Fix Committed → Fix Released
Changed in libshout:
status: Unknown → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.