[gstreamer-bugs] [Bug 399613] New: goom doesn't check sink caps (occasional segfault on AAC files)

GStreamer (bugzilla.gnome.org) bugzilla-daemon at bugzilla.gnome.org
Mon Jan 22 16:30:13 PST 2007


Do not reply to this via email (we are currently unable to handle email
responses and they get discarded).  You can add comments to this bug at
http://bugzilla.gnome.org/show_bug.cgi?id=399613

  GStreamer | gst-plugins-good | Ver: 0.10.11

           Summary: goom doesn't check sink caps (occasional segfault on AAC
                    files)
           Product: GStreamer
           Version: 0.10.11
          Platform: Other
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: ed at catmur.co.uk
         QAContact: gstreamer-bugs at lists.sourceforge.net
     GNOME version: 2.17/2.18
   GNOME milestone: Unspecified


Occasionally when playing AACs, Rhythmbox segvs when I load the Goom
visualisation:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1343255664 (LWP 325)]
gst_goom_chain (pad=0x90b1d90, buffer=0x926f6d0) at gstgoom.c:492
492             goom->datain[0][i] = *data;
(gdb) p data
$1 = (const guint16 *) 0x0
(gdb) bt
#0  gst_goom_chain (pad=0x90b1d90, buffer=0x926f6d0) at gstgoom.c:492
#1  0xb6f52d1a in gst_pad_chain_unchecked (pad=0x90b1d90, buffer=0x926f6d0)
    at gstpad.c:3412
#2  0xb6f57a4c in gst_pad_push (pad=0x9166320, buffer=0x926f6d0)
    at gstpad.c:3578
#3  0xb6f443aa in gst_proxy_pad_do_chain (pad=0x935b620, buffer=0x926f6d0)
    at gstghostpad.c:189
#4  0xb6f52d1a in gst_pad_chain_unchecked (pad=0x935b620, buffer=0x926f6d0)
    at gstpad.c:3412
#5  0xb6f57a4c in gst_pad_push (pad=0x90b1c10, buffer=0x926f6d0)
    at gstpad.c:3578
#6  0xb6fbc042 in gst_base_transform_chain (pad=0x922f248, buffer=0x926f6d0)
    at gstbasetransform.c:1548
#7  0xb6f52d1a in gst_pad_chain_unchecked (pad=0x922f248, buffer=0x926f6d0)
    at gstpad.c:3412
#8  0xb6f57a4c in gst_pad_push (pad=0x9195b30, buffer=0x926f6d0)
    at gstpad.c:3578
#9  0xb52f5a50 in gst_queue_loop (pad=0x9195b30) at gstqueue.c:786
#10 0xb6f6bf96 in gst_task_func (task=0x909ac10, tclass=0x922cd00)
    at gsttask.c:192
#11 0xb6cbbfd7 in g_thread_pool_thread_proxy (data=0x902d6c8)
    at gthreadpool.c:265
#12 0xb6cbacdf in g_thread_create_proxy (data=0x9207a40) at gthread.c:591
---Type <return> to continue, or q <return> to quit---
#13 0xb6eb94ab in start_thread (arg=0xafef8b90) at pthread_create.c:296
#14 0xb6b8c1ae in clone () from /lib/libc.so.6
(gdb) p goom->bps
$10 = 0
(gdb) p *goom
$11 = {element = {object = {object = {g_type_instance = {g_class = 0x8feae08}, 
        ref_count = 2, qdata = 0x0}, refcount = 0, lock = 0x902ada8, 
      name = 0x90ad860 "goom3", name_prefix = 0x0, parent = 0x908e2e0, 
      flags = 0, _gst_reserved = 0x0}, state_lock = 0x8b7e1d0, 
    state_cond = 0x9324c28, state_cookie = 3, 
    current_state = GST_STATE_PLAYING, next_state = GST_STATE_VOID_PENDING, 
    pending_state = GST_STATE_VOID_PENDING, 
    last_return = GST_STATE_CHANGE_SUCCESS, bus = 0x89560b0, 
    clock = 0x8b9c168, base_time = 0, numpads = 2, pads = 0xb3c80400, 
    numsrcpads = 1, srcpads = 0x8b83bc0, numsinkpads = 1, 
    sinkpads = 0x8e84cd0, pads_cookie = 2, _gst_reserved = {0x0, 0x0, 0x0, 
      0x0}}, sinkpad = 0x90b1d90, srcpad = 0x9051488, adapter = 0x8ff8020, 
  rate = 0, channels = 0, bps = 0, fps_n = 20, fps_d = 1, width = 320, 
  height = 240, duration = 50000000, outsize = 307200, spf = 0, datain = {{
      0 <repeats 512 times>}, {0 <repeats 512 times>}}, goomdata = {
    pixel = 0xb4c00018, back = 0xb4c4b0a0, p1 = 0xb4c00080, p2 = 0xb4c4b100, 
    cycle = 0, resolx = 320, resoly = 240, buffsize = 76800, lockvar = 0, 
    goomvar = 0, totalgoom = 0, agoom = 0, loopvar = 0, speedvar = 0, 
    lineMode = 0, goomlimit = 2 '\002', zfd = 0x8956c38, rand_tab = 0x9656f80, 
    rand_pos = 65536}, segment = {rate = 1, abs_rate = 1, 
    format = GST_FORMAT_TIME, flags = GST_SEEK_FLAG_NONE, start = 0, 
    stop = -1, time = 0, accum = 0, last_stop = 0, duration = -1, 
    applied_rate = 1, _gst_reserved = "\000\000\000\000\000\000\000"}, 
---Type <return> to continue, or q <return> to quit---
  next_ts = 40031201814, proportion = 1, earliest_time = 18446744073709551615}

Evidently in gst_goom_sink_setcaps() gst_structure_get_int() returned 0 for
channels and rate.  Goom should refuse to set caps if this happens.


-- 
Configure bugmail: http://bugzilla.gnome.org/userprefs.cgi?tab=email




More information about the Gstreamer-bugs mailing list