GNOME Bugzilla – Bug 142320
[ffmpeg - ima-adpcm-ws/wsaud] scheduler issues
Last modified: 2004-12-22 21:47:04 UTC
Rhythmbox with the GStreamer backend crashes when I try to import a directory containing the attached quicktime file. This is with the Mandrakelinux packages of gstreamer 0.8.1 and rhythmbox 0.8.3. gst-launch-ext-0.8 doesn't crash on this file. I have the following gstreamer packages installed: gstreamer-alsa-0.8.1-3mdk gstreamer-audio-formats-0.8.1-3mdk gstreamer-avi-0.8.1-3mdk gstreamer-cdparanoia-0.8.1-3mdk gstreamer-colorspace-0.8.1-3mdk gstreamer-faad-0.8.1-2plf gstreamer-ffmpeg-0.8.0-2mdk gstreamer-flac-0.8.1-3mdk gstreamer-GConf-0.8.1-3mdk gstreamer-gnomevfs-0.8.1-3mdk gstreamer-mad-0.8.1-3mdk gstreamer-mpeg-0.8.1-3mdk gstreamer-player-0.8.0-1mdk gstreamer-plugins-0.8.1-3mdk gstreamer-quicktime-0.8.1-3mdk gstreamer-tools-0.8.1-1mdk gstreamer-visualisation-0.8.1-3mdk gstreamer-vorbis-0.8.1-3mdk gstreamer-x11-0.8.1-3mdk libgstgconf0.8-0.8.1-3mdk libgstplayer0-0.8.0-1mdk libgstreamer0.8-0.8.1-1mdk libgstreamer0.8-devel-0.8.1-1mdk libgstreamer-plugins0.8-0.8.1-3mdk libgstreamer-plugins0.8-devel-0.8.1-3mdk
Created attachment 27586 [details] strange Quicktime file This is a quicktime file from a saved band web page that happened to be in a music folder.
This is another file that makes rhythmbox crash when I try to import the folder it is in: http://wwwra.informatik.uni-rostock.de/~waschk/mercyseverity_full_100.wma
Both files crash with GStreamer head for me using gst-launch-0.8 filesrc location="./crash.mov" ! typefind ! spider ! audio/x-raw-int ! fakesink Reassigning to the gstreamer guys
[rbultje@shrek gst-plugins]$ ../gstreamer/tools/gst-launch filesrc location=/tmp/crash.mov ! qtdemux RUNNING pipeline ... ERROR qtdemux(27941) qtdemux.c(1236):qtdemux_type_get: unknown QuickTime node type SVQ1 ERROR qtdemux(27941) qtdemux.c(1236):qtdemux_type_get: unknown QuickTime node type name ERROR qtdemux(27941) qtdemux.c(1236):qtdemux_type_get: unknown QuickTime node type hinf ERROR qtdemux(27941) qtdemux.c(1236):qtdemux_type_get: unknown QuickTime node type SVQ1 ERROR qtdemux(27941) qtdemux.c(1236):qtdemux_type_get: unknown QuickTime node type name ERROR qtdemux(27941) qtdemux.c(1236):qtdemux_type_get: unknown QuickTime node type hinf Floating point exception [rbultje@shrek gst-plugins]$ and the WMA file has similar issues to the ones described in #135145, although I _can_ actually reproduce this (but not #135145). It has an OBJ_DATA chunk before the headers (right at position 0x1e), then a string (why?!?) and full headers and then the data. Our demuxer doesn't understand this (yet). I'd recommend making separate bugs for both, or they'll get lost.
Created attachment 27635 [details] Chiptune Another file that makes rhythmbox crash when it's in the imported directory. It's a chiptune from chiptune.com, so gstreamer can't play it but rhythmbox misidentifies the file.
Small update on that bug: * ds said he had an uncommitted fix for the quicktime crash * mercyseverity_full.wma no longer crash with gst-plugins head, probably because of: 2004-05-12 Colin Walters <walters@redhat.com> * gst/asfdemux/gstasfdemux.c (gst_asf_demux_process_segment): Avoid inflooping if we can't find a chunk. Or in other words, don't blow chunks if we don't have a chunk to blow.
The chiptune file doesn't crash rhythmbox here.
to #7: AFAIK the ffmpeg plugin was used for the chiptune file, do you have that installed? I'll post the debug output of rhythmbox for that file tomorrow.
I didn't have gst-ffmpeg installed. After installing it, with gst-launch-0.8 I get $ gst-launch-0.8 filesrc location=./chiptune.test ! typefind ! spider ! audio/x-raw-int ! fakesink EXECUTION du tube en cours ... ERROR default(28019) gstffmpegdemux.c(519):gst_ffmpegdemux_open:<ffdemux_wsaud0> (null) ERROR default(28019) gstffmpegdemux.c(519):gst_ffmpegdemux_open:<ffdemux_wsaud0> Not enough memory ERROR: from element /pipeline0/spider0/ffdemux_wsaud0: GStreamer encountered a general supporting library error. Additional debug info: gstffmpegdemux.c(519): gst_ffmpegdemux_open: /pipeline0/spider0/ffdemux_wsaud0: Not enough memory ERROR scheduler(28019) gstoptimalscheduler.c(2306):gst_opt_scheduler_iterate:<GstOptScheduler@0x8177c90> in error state Execution ended after 2 iterations (sum 859385000 ns, average 429692500 ns, min 27963000 ns, max 831422000 ns). (ie no crash), and when I try to import it in rhythmbox, rhythmbox doesn't add it to the library and doesn't crash which is the expected behaviour I think. Does rhythmbox outputs warning on the console when you try to import that file ? (run rhythmbox -d). Is the gstreamer command line I used working for you ?
The ffmpeg demuxer is broken, it's because of some funkiness between EOF handling and gstffmpegprotocol.c. I'm working on that, but having a hard time right now.
Both gst-launch and rhythmbox crash with the chiptune. Here's the output from gst-launch: [goetz@abgrund 2]$ gst-launch filesrc location=comic_bakery.sog ! typefind ! spider ! audio/x-raw-int ! fakesink #RUNNING pipeline ... ERROR: from element /pipeline0/spider0/ffdemux_wsaud0: GStreamer encountered a general supporting library error. Additional debug info: gstffmpegdemux.c(532): gst_ffmpegdemux_open: /pipeline0/spider0/ffdemux_wsaud0: Not enough memory Execution ended after 1 iterations (sum 347749000 ns, average 347749000 ns, min 347749000 ns, max 347749000 ns). (process:8688): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GstElement' (process:8688): GStreamer-CRITICAL **: file gstelement.c: line 1163 (gst_element_remove_pad): assertion `GST_IS_ELEMENT (element)' failed (process:8688): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GstElement' (process:8688): GStreamer-CRITICAL **: file gstelement.c: line 1163 (gst_element_remove_pad): assertion `GST_IS_ELEMENT (element)' failed (process:8688): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GstElement' (process:8688): GStreamer-CRITICAL **: file gstelement.c: line 1163 (gst_element_remove_pad): assertion `GST_IS_ELEMENT (element)' failed (process:8688): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GstElement' (process:8688): GStreamer-CRITICAL **: file gstelement.c: line 1163 (gst_element_remove_pad): assertion `GST_IS_ELEMENT (element)' failed (process:8688): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GstElement' (process:8688): GStreamer-CRITICAL **: file gstelement.c: line 1163 (gst_element_remove_pad): assertion `GST_IS_ELEMENT (element)' failed Segmentation fault (core dumped) Here's some output from rhythmbox -d: [0x80f2d58] [rb_shell_player_set_play_button] rb-shell-player.c:1535 (18:54:49): setting play button [0x80f2d58] [rb_statusbar_entry_view_changed_cb] rb-statusbar.c:582 (18:54:49): entry view changed [0x80f2d58] [paned_size_allocate_cb] rb-library-source.c:1150 (18:54:49): paned size allocate [0x80f2d58] [paned_size_allocate_cb] rb-shell.c:2359 (18:54:49): paned size allocate [0x80f2d58] [paned_size_allocate_cb] rb-library-source.c:1150 (18:54:49): paned size allocate [0x80f2d58] [paned_size_allocate_cb] rb-shell.c:2359 (18:54:49): paned size allocate [0x80f2d58] [rb_shell_player_state_changed_cb] rb-shell-player.c:1393 (18:54:49): state changed [0x80f2d58] [rb_shell_player_sync_control_state] rb-shell-player.c:1335 (18:54:49): syncing control state [0x80f2d58] [rb_shell_player_sync_buttons] rb-shell-player.c:1642 (18:54:49): syncing with source 0x8365870 [0x80f2d58] [rb_shell_player_set_play_button] rb-shell-player.c:1535 (18:54:49): setting play button [0x80f2d58] [rb_library_source_state_pref_changed] rb-library-source.c:1174 (18:54:49): state prefs changed [0x80f2d58] [rb_library_source_state_prefs_sync] rb-library-source.c:1158 (18:54:49): syncing state [0x80f2d58] [rb_shell_player_state_changed_cb] rb-shell-player.c:1393 (18:54:49): state changed [0x80f2d58] [rb_shell_player_sync_control_state] rb-shell-player.c:1335 (18:54:49): syncing control state [0x80f2d58] [rb_shell_player_sync_buttons] rb-shell-player.c:1642 (18:54:49): syncing with source 0x8365870 [0x80f2d58] [rb_shell_player_set_play_button] rb-shell-player.c:1535 (18:54:49): setting play button [0x80f2d58] [paned_changed_cb] rb-shell.c:2379 (18:54:49): paned changed [0x80f2d58] [rb_shell_sync_paned] rb-shell.c:2337 (18:54:49): syncing paned to 146 [0x80f2d58] [paned_size_allocate_cb] rb-shell.c:2359 (18:54:49): paned size allocate [0x80f2d58] [rb_shell_player_state_changed_cb] rb-shell-player.c:1393 (18:54:49): state changed [0x80f2d58] [rb_shell_player_sync_control_state] rb-shell-player.c:1335 (18:54:49): syncing control state [0x80f2d58] [rb_shell_player_sync_buttons] rb-shell-player.c:1642 (18:54:49): syncing with source 0x8365870 [0x80f2d58] [rb_shell_player_set_play_button] rb-shell-player.c:1535 (18:54:49): setting play button [0x80f2d58] [paned_changed_cb] rb-shell.c:2379 (18:54:49): paned changed [0x80f2d58] [rb_shell_sync_paned] rb-shell.c:2337 (18:54:49): syncing paned to 146 [0x8303228] [rb_metadata_load] rb-metadata-gst.c:418 (18:54:56): loading metadata for uri: file:///home/goetz/packages/rhythmbox-crash/2/comic_bakery.sog [0x80f2d58] [rb_shell_player_state_changed_cb] rb-shell-player.c:1393 (18:54:56): state changed [0x80f2d58] [rb_shell_player_sync_control_state] rb-shell-player.c:1335 (18:54:56): syncing control state [0x80f2d58] [rb_shell_player_sync_buttons] rb-shell-player.c:1642 (18:54:56): syncing with source 0x8365870 [0x80f2d58] [rb_shell_player_set_play_button] rb-shell-player.c:1535 (18:54:56): setting play button [0x8303228] [rb_metadata_gst_typefind_cb] rb-metadata-gst.c:371 (18:54:56): found type application/x-gst_ff-wsaud [0x8303228] [rb_metadata_gst_error_cb] rb-metadata-gst.c:282 (18:54:56): caught error: GStreamer encountered a general supporting library error. [0x8303228] [rb_metadata_load] rb-metadata-gst.c:516 (18:54:56): ignoring file file:///home/goetz/packages/rhythmbox-crash/2/comic_bakery.sog with detected type application/x-gst_ff-wsaud (rhythmbox:8732): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GstElement' (rhythmbox:8732): GStreamer-CRITICAL **: file gstelement.c: line 1163 (gst_element_remove_pad): assertion `GST_IS_ELEMENT (element)' failed (rhythmbox:8732): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GstElement' (rhythmbox:8732): GStreamer-CRITICAL **: file gstelement.c: line 1163 (gst_element_remove_pad): assertion `GST_IS_ELEMENT (element)' failed (rhythmbox:8732): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GstElement' (rhythmbox:8732): GStreamer-CRITICAL **: file gstelement.c: line 1163 (gst_element_remove_pad): assertion `GST_IS_ELEMENT (element)' failed (rhythmbox:8732): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GstElement' (rhythmbox:8732): GStreamer-CRITICAL **: file gstelement.c: line 1163 (gst_element_remove_pad): assertion `GST_IS_ELEMENT (element)' failed (rhythmbox:8732): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GstElement' (rhythmbox:8732): GStreamer-CRITICAL **: file gstelement.c: line 1163 (gst_element_remove_pad): assertion `GST_IS_ELEMENT (element)' failed Segmentation fault (core dumped) [goetz@abgrund goetz]$
Eek. someone please disable the ffmpeg demuxer for autoplugging (set rank to none) until I fix this.
Some demuxers disabled and EOF handling fixed as well. File no longer crashes, but still doesn't work: [rbultje@shrek riff]$ ../../../../gstreamer/tools/gst-launch filesrc location=/tmp/chiptune.sog ! typefind ! spider ! osssink RUNNING pipeline ... ERROR (1087143839:701216) default(23518) gstffmpegdemux.c(520):gst_ffmpegdemux_open:<ffdemux_wsaud0> (null) ERROR (1087143839:701615) default(23518) gstffmpegdemux.c(520):gst_ffmpegdemux_open:<ffdemux_wsaud0> Not enough memory ERROR: from element /pipeline0/spider0/ffdemux_wsaud0: GStreamer encountered a general supporting library error. Additional debug info: gstffmpegdemux.c(520): gst_ffmpegdemux_open: /pipeline0/spider0/ffdemux_wsaud0: Not enough memory ERROR (1087143839:702150) scheduler(23518) gstoptimalscheduler.c(2392):gst_opt_scheduler_iterate:<GstOptScheduler@0x81795e8> in error state Execution ended after 2 iterations (sum 869948000 ns, average 434974000 ns, min 22431000 ns, max 847517000 ns). [rbultje@shrek riff]$ Changing topic to reflect new item, and _please_ stop putting new files in this bug report. Make separate bugs for each file.
Actually, that's a ffmpeg bug. It returns the wrong error code, it failed to read something (I/O error, -EIO = -5 = AVERROR_NOMEM). Bug report already underway. After fixing that, it still fails with scheduler assertions. No clue where to go from there: [rbultje@shrek gst-ffmpeg]$ ../gstreamer/tools/gst-launch filesrc location=/tmp/chiptune.sog ! ffdemux_wsaud .audio_00 ! ffdec_adpcm_ima_ws ! audioconvert ! audioscale ! alsasink RUNNING pipeline ... Segmentation fault [rbultje@shrek gst-ffmpeg]$ ../gstreamer/tools/gst-launch filesrc location=/tmp/chiptune.sog ! spider ! audioconvert ! audioscale ! osssink RUNNING pipeline ... ** ERROR **: file gstoptimalscheduler.c: line 704 (sort_chain): assertion failed: (original == NULL) aborting... Aborted [rbultje@shrek gst-ffmpeg]$ ../gstreamer/tools/gst-launch filesrc location=/tmp/chiptune.sog ! ffdemux_wsaud .audio_00 ! ffdec_adpcm_ima_ws ! audioconvert ! audioscale ! alsasink RUNNING pipeline ... Segmentation fault [rbultje@shrek gst-ffmpeg]$ ../gstreamer/tools/gst-launch filesrc location=/tmp/chiptune.sog ! ffdemux_wsaud .audio_00 ! ffdec_adpcm_ima_ws ! audioconvert ! audioscale ! osssink RUNNING pipeline ... Execution ended after 2 iterations (sum 165792000 ns, average 82896000 ns, min 17000 ns, max 165775000 ns). basicgthread goes to 100% CPU use, entrygthread just does nothing. What's supposed to happen? Xine doesn't do anything either.
We continue in #144510 because this is too messy...