After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 641330 - icydemux: crash while playing MP3 stream in amarok
icydemux: crash while playing MP3 stream in amarok
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
unspecified
Other Linux
: Normal critical
: 0.10.29
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-02-03 10:53 UTC by Vitor Boschi da Silva
Modified: 2011-03-08 15:32 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Backtrace from Amarok (24.60 KB, text/plain)
2011-02-03 10:54 UTC, Vitor Boschi da Silva
Details

Description Vitor Boschi da Silva 2011-02-03 10:53:42 UTC
Amarok crashed while playing an MP3 stream from a internet radio. It was just running in background when this happened, and Amarok devs told me to report the bug here.
I believe the crash happens when the network is under heavy load, so it may be due to an empty buffer, but it's just a guess, since I don't know GStreamer's codebase.

I got another crash under Dragon Player under the same circunstances, but I don't have it's backtrace. If it happens again, I'll upload it too.
Comment 1 Vitor Boschi da Silva 2011-02-03 10:54:22 UTC
Created attachment 179980 [details]
Backtrace from Amarok
Comment 2 Fabio Durán Verdugo 2011-02-03 12:55:38 UTC
paste here the attach backtrace


Application: Amarok (amarok), signal: Segmentation fault
[Current thread is 1 (Thread 0x7fa37c416840 (LWP 2791))]

Thread 6 (Thread 0x7fa337dee700 (LWP 2808))

  • #6 gst_icydemux_send_tag_event
    at gsticydemux.c line 631
  • #7 gst_icydemux_handle_event
    at gsticydemux.c line 384
  • #8 gst_pad_send_event
    at gstpad.c line 5120
  • #9 gst_pad_push_event
    at gstpad.c line 4974
  • #10 gst_type_find_element_handle_event
    at gsttypefindelement.c line 593
  • #11 gst_pad_send_event
    at gstpad.c line 5120
  • #12 gst_pad_push_event
    at gstpad.c line 4974
  • #13 gst_pad_send_event
    at gstpad.c line 5120
  • #14 gst_pad_push_event
    at gstpad.c line 4974
  • #15 push_and_ref
    at gstutils.c line 3455
  • #16 foreach_fold_func
    at gstiterator.c line 574
  • #17 gst_iterator_fold
    at gstiterator.c line 549
  • #18 gst_iterator_foreach
    at gstiterator.c line 602
  • #19 gst_element_found_tags
    at gstutils.c line 3482
  • #20 gst_soup_http_src_got_headers_cb
    at gstsouphttpsrc.c line 855
  • #21 g_closure_invoke
    at gclosure.c line 766
  • #22 signal_emit_unlocked_R
    at gsignal.c line 3252
  • #23 g_signal_emit_valist
    at gsignal.c line 2983
  • #24 g_signal_emit
    at gsignal.c line 3040
  • #25 io_read
    at soup-message-io.c line 927
  • #26 g_closure_invoke
    at gclosure.c line 766
  • #27 signal_emit_unlocked_R
    at gsignal.c line 3252
  • #28 g_signal_emit_valist
    at gsignal.c line 2983
  • #29 g_signal_emit
    at gsignal.c line 3040
  • #30 socket_read_watch
    at soup-socket.c line 1168
  • #31 g_main_dispatch
    at gmain.c line 2149
  • #32 g_main_context_dispatch
    at gmain.c line 2702
  • #33 g_main_context_iterate
    at gmain.c line 2780
  • #34 g_main_loop_run
    at gmain.c line 2988
  • #35 gst_soup_http_src_create
    at gstsouphttpsrc.c line 1226
  • #36 gst_base_src_get_range
    at gstbasesrc.c line 2129
  • #37 gst_base_src_loop
    at gstbasesrc.c line 2386
  • #38 gst_task_func
    at gsttask.c line 271
  • #39 g_thread_pool_thread_proxy
    at gthreadpool.c line 319
  • #40 g_thread_create_proxy
    at gthread.c line 1897
  • #41 start_thread
    from /lib64/libpthread.so.0
  • #42 clone
    from /lib64/libc.so.6

Comment 3 Tim-Philipp Müller 2011-02-21 11:34:09 UTC
I wasn't able to reproduce the problem with the streams I tried, but hopefully this should fix it:

 commit 06972db7b6a55f951833327a659afc76bef6b5c8
 Author: Tim-Philipp Müller <tim.muller@collabora.co.uk>
 Date:   Mon Feb 21 00:55:49 2011 +0000

    icydemux: fix tag list handling issues that might have caused crashes
    
    Fix slightly confused tag handling in some places: make it clear when
    we're taking ownership of a tag list and when not. For example,
    gst_icydemux_tag_found() was taking ownership when the source pad
    existed, but otherwise not (leak). Also, gst_event_parse_tag() does
    not return a newly-allocated taglist, but a tag list that belongs to
    the tag event, so don't give ownership of it away.
    
    While we're at it, some minor clean-ups: don't re-invent g_strndup()
    and simplify gst_icydemux_parse_and_send_tags() a bit, and don't
    leak the tag list in case no valid tags where found.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=641330


If you have some particular radio stations/streams this happens with, it would be great if you could give me the URL (or make a GST_DEBUG=*:5 debug log).
Comment 4 Vitor Boschi da Silva 2011-02-21 11:42:01 UTC
Thanks for your effort on fixing it.
The problem is a bit hard to reproduce. It usually happens once or twice a day. Can you give me more precise instructions on how to get that debug log? Would "export GST_DEBUG=*:5" before running the audio app give me it?

The stream url is http://listen.di.fm/public3/eurodance.pls, but I didn't really tested with another streams to see if the problem happens too.
Comment 5 timshel 2011-02-22 20:43:57 UTC
I think I have a similar problem. It was triggered by disconnecting the Internet while playing a stream but it didn't happen all the time. Sometimes you just got a Gstreamer error message with a html message.

But I was able to reproduce the crash several times through initiating suspend while Amarok was playing an Internet stream. I seems that you have to wait quite some time during suspend because in my case the computer was sleeping overnight and the crash didn't happen after a short suspend.

I am going to check if your patch helps in this case.