GNOME Bugzilla – Bug 161471
gst-launch gets a floating point exception when outputting to alsasink
Last modified: 2005-08-29 15:43:16 UTC
I can play sounds through alsa using the alsaplayer utility as well as through xmms, however when I try to play through rhythmbox, I get a crash. I inspected this further and I traced it down to a problem in the underlying gstreamer utilities that rhythmbox uses. [mrose@host-175 Constantines]$ gst-launch filesrc location=STYOU.ogg ! vorbisdec ! alsasink RUNNING pipeline ... Floating point exception (core dumped) mrose@host-175 bin]$ gdb -s /usr/lib/debug/usr/bin/gst-launch-0.8.debug -e /usr /bin/gst-launch-0.8 GNU gdb Red Hat Linux (6.1post-1.20040607.41rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db lib rary "/lib/tls/libthread_db.so.1". (gdb) filesrc location=/home/users/mrose/mp3/Constantines/Constantines/STYOU.ogg ! vorbisdec ! alsasink Undefined command: "filesrc". Try "help". (gdb) set args filesrc location=/home/users/mrose/mp3/Constantines/Constantines/ STYOU.ogg ! vorbisdec ! alsasink (gdb) run Starting program: /usr/bin/gst-launch-0.8 filesrc location=/home/users/mrose/mp3 /Constantines/Constantines/STYOU.ogg ! vorbisdec ! alsasink [Thread debugging using libthread_db enabled] [New Thread -151079232 (LWP 28214)] RUNNING pipeline ... Program received signal SIGFPE, Arithmetic exception.
+ Trace 53596
Thread NaN (LWP 28214)
Looks like a duplicate of bug 153227, but I hesitate to mark it as such since it looks like Matt may be willing to try to track down information for the GStreamer devs...
Matt, your bug report is saying that you have gst-plugins 0.8.6, can you please explicitely confirm that? I hoped to have solved this issue in 0.8.6... If it's 0.8.6, I'd like to continue debugging it.
I'm just double-checking that now. Let you know in two secs
yep. I downloaded the latest version, and is still exhibiting the same behaviour. gstreamer-plugins-0.8.6-0.fdr.1.3 This version does tell me to file a bug, though. [mrose@host-175 Constantines]$ gst-launch-i386 filesrc location=09\ -\ St.\ You.mp3 ! mad ! alsasink RUNNING pipeline ... ERROR: from element /pipeline0/mad0: Internal GStreamer error: pad problem. File a bug. Additional debug info: gstpad.c(2490): gst_pad_set_explicit_caps: /pipeline0/mad0: failed to negotiate (try_set_caps with "audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2" returned REFUSED) Floating point exception running with --gst-debug flags from 153227 [mrose@host-175 Constantines]$ gst-launch-i386 --gst-debug=*alsa*:5 filesrc location=09\ -\ St.\ You.mp3 ! mad ! alsasink RUNNING pipeline ... INFO (0x9fc68d0 - 306455:04:10.914409000) alsa( 6894) gstalsa.c(1325):gst_alsa_open_audio: Opening alsa device "default"... LOG (0x9fc68d0 - 306455:04:10.950876000) alsa( 6894) gstalsa.c(876):gst_alsa_get_caps:<alsasink0> get_caps returns audio/x-alaw, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-mulaw, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-float, buffer-frames=(int)[ 0, 2147483647 ], width=(int){ 32, 64 }, endianness=(int)1234, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)16, depth=(int)16, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)32, depth=(int)24, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)32, depth=(int)32, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)24, depth=(int)24, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)24, depth=(int)20, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)24, depth=(int)18, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)8, depth=(int)8, signed=(boolean){ true, false }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ] LOG (0x9fc68d0 - 306455:04:10.978807000) alsa( 6894) gstalsa.c(876):gst_alsa_get_caps:<alsasink0> get_caps returns audio/x-alaw, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-mulaw, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-float, buffer-frames=(int)[ 0, 2147483647 ], width=(int){ 32, 64 }, endianness=(int)1234, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)16, depth=(int)16, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)32, depth=(int)24, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)32, depth=(int)32, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)24, depth=(int)24, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)24, depth=(int)20, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)24, depth=(int)18, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)8, depth=(int)8, signed=(boolean){ true, false }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ] LOG (0x9fc68d0 - 306455:04:11.008700000) alsa( 6894) gstalsasink.c(380):gst_alsa_sink_loop:<alsasink0> pulled data 0x9fd4a48 from pad 0 LOG (0x9fc68d0 - 306455:04:11.008904000) alsa( 6894) gstalsasink.c(385):gst_alsa_sink_loop:<alsasink0> pulled data 0x9fd4a48 is an event, checking LOG (0x9fc68d0 - 306455:04:11.008982000) alsa( 6894) gstalsasink.c(209):gst_alsa_sink_check_event:<alsasink0> checking event 0x9fd4a48 of type 4 on sink pad 0 WARN (0x9fc68d0 - 306455:04:11.009062000) alsa( 6894) gstalsasink.c(246):gst_alsa_sink_check_event:<alsasink0> couldn't extract time from discont event. Bad things might happen! LOG (0x9fc68d0 - 306455:04:11.009138000) alsa( 6894) gstalsasink.c(257):gst_alsa_sink_check_event:<alsasink0> unreffing event 0x9fd4a48 of type 4 with refcount 1 LOG (0x9fc68d0 - 306455:04:11.043334000) alsa( 6894) gstalsa.c(876):gst_alsa_get_caps:<alsasink0> get_caps returns audio/x-alaw, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-mulaw, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-float, buffer-frames=(int)[ 0, 2147483647 ], width=(int){ 32, 64 }, endianness=(int)1234, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)16, depth=(int)16, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)32, depth=(int)24, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)32, depth=(int)32, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)24, depth=(int)24, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)24, depth=(int)20, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)24, depth=(int)18, signed=(boolean){ false, true }, endianness=(int){ 1234, 4321 }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ]; audio/x-raw-int, width=(int)8, depth=(int)8, signed=(boolean){ true, false }, rate=(int)[ 8000, 192000 ], channels=(int)[ 1, 32 ] DEBUG (0x9fc68d0 - 306455:04:11.044332000) alsa( 6894) gstalsa.c(1019):gst_alsa_link: found format S16_LE INFO (0x9fc68d0 - 306455:04:11.044462000) alsa( 6894) gstalsa.c(1403):gst_alsa_probe_hw_params: Probing format: S16_LE 44100Hz, 2 channels WARN (0x9fc68d0 - 306455:04:11.045480000) alsa( 6894) gstalsa.c(1445):gst_alsa_probe_hw_params:<alsasink0> "snd_pcm_hw_params_set_period_size_near (this->handle, hw_params, &period_size, 0)": Invalid argument ERROR: from element /pipeline0/mad0: Internal GStreamer error: pad problem. File a bug. Additional debug info: gstpad.c(2490): gst_pad_set_explicit_caps: /pipeline0/mad0: failed to negotiate (try_set_caps with "audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2" returned REFUSED) Floating point exception Do you have a debug rpm so that I can run this under gdb? Would that help?
oh, as well: output of lspci -vv 00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] Sound Controller (rev a0) Subsystem: Giga-byte Technology: Unknown device a002 Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 32 (13000ns min, 2750ns max) Interrupt: pin C routed to IRQ 10 Region 0: I/O ports at d800 [size=256] Region 1: I/O ports at dc00 [size=128] Capabilities: [48] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME-
*** This bug has been marked as a duplicate of 151288 ***