Your message dated Wed, 07 Oct 2009 11:39:08 +0200
with message-id <[email protected]>
and subject line Re: Bug#545736: missing gobject thread_init
has caused the Debian Bug report #545736,
regarding python-gst0.10: SIGSEGV with my small python Ogg/Theora encoder
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
545736: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=545736
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: python-gst0.10
Version: 0.10.16-1
Severity: normal

Hi,

I am a complete beginner in gst programming, but I believe a python module
should not segfault, thus the bugreport.

My small Ogg/Theora encoder attempt is attached.

And here is the backtrace. Feel free to ask for more info.

Cheers,

Alex
--
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb7337b90 (LWP 12844)]
0x08115fdc in PyFrame_New (tstate=0x0, code=0xb7db1608, globals=0xb7e05acc,
    locals=0x0) at ../Objects/frameobject.c:559
559 ../Objects/frameobject.c: Aucun fichier ou dossier de ce type.
    in ../Objects/frameobject.c
(gdb) bt
#0  0x08115fdc in PyFrame_New (tstate=0x0, code=0xb7db1608,
    globals=0xb7e05acc, locals=0x0) at ../Objects/frameobject.c:559
#1  0x080cfaa9 in PyEval_EvalCodeEx (co=0xb7db1608, globals=0xb7e05acc,
    locals=0x0, args=0xb7dc45d8, argcount=4, kws=0x0, kwcount=0, defs=0x0,
    defcount=0, closure=0x0) at ../Python/ceval.c:2670
#2  0x08116b91 in function_call (func=0xb75d079c, arg=0xb7dc45cc, kw=0x0)
    at ../Objects/funcobject.c:517
#3  0x0805d4b7 in PyObject_Call (func=0x0, arg=0xb7dc45cc, kw=0x0)
    at ../Objects/abstract.c:1861
#4  0x0806369f in instancemethod_call (func=0xb75d079c, arg=0xb7dc45cc, kw=0x0)
    at ../Objects/classobject.c:2519
#5  0x0805d4b7 in PyObject_Call (func=0x0, arg=0xb75dc0f4, kw=0x0)
    at ../Objects/abstract.c:1861
#6  0x080c88fc in PyEval_CallObjectWithKeywords (func=0xb7dac11c,
    arg=0xb75dc0f4, kw=0x0) at ../Python/ceval.c:3481
#7  0x0805d640 in PyObject_CallObject (o=0xb7dac11c, a=0xb75dc0f4)
    at ../Objects/abstract.c:1852
#8  0xb766313e in ?? ()
   from /usr/lib/pymodules/python2.5/gtk-2.0/gobject/_gobject.so
#9  0xb77d2b63 in IA__g_closure_invoke (closure=0x83608dc, return_value=0x0,
    n_param_values=3, param_values=0x83608a0, invocation_hint=0xb733674c)
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/gobject/gclosure.c:767
#10 0xb77e6b8f in signal_emit_unlocked_R (node=0x832bfa0, detail=0,
    instance=0x83271c0, emission_return=0x0, instance_and_params=0x83608a0)
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/gobject/gsignal.c:3247
#11 0xb77e7fd9 in IA__g_signal_emit_valist (instance=0x83271c0, signal_id=25,
    detail=0, var_args=0xb73368f4 "P\223\66\b\4")
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/gobject/gsignal.c:2980
#12 0xb77e8436 in IA__g_signal_emit (instance=0x83271c0, signal_id=25,
    detail=0)
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/gobject/gsignal.c:3037
#13 0xb7636779 in close_pad_link (element=0x824b5a0, pad=0x8366010,
    caps=0x826fa40, decode_bin=0x83271c0, more=1) at gstdecodebin.c:936
#14 0xb7637480 in close_link (element=0x836e060, pad=0x8347cc0,
    caps=0x827b980, decode_bin=0x83271c0, more=1) at gstdecodebin.c:1774
#15 try_to_link_1 (element=0x836e060, pad=0x8347cc0, caps=0x827b980,
    decode_bin=0x83271c0, more=1) at gstdecodebin.c:1184
#16 close_pad_link (element=0x836e060, pad=0x8347cc0, caps=0x827b980,
    decode_bin=0x83271c0, more=1) at gstdecodebin.c:959
#17 0xb763803d in new_pad (element=0x836e060, pad=0x8347cc0, dynamic=0x835e370)
    at gstdecodebin.c:1505
#18 0xb77df6cc in IA__g_cclosure_marshal_VOID__OBJECT (closure=0x83a97a0,
    return_value=0x0, n_param_values=2, param_values=0x8245ca0,
    invocation_hint=0xb7336c4c, marshal_data=0xb7637ec0)
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/gobject/gmarshal.c:636
#19 0xb77d2b63 in IA__g_closure_invoke (closure=0x83a97a0, return_value=0x0,
    n_param_values=2, param_values=0x8245ca0, invocation_hint=0xb7336c4c)
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/gobject/gclosure.c:767
#20 0xb77e6b8f in signal_emit_unlocked_R (node=0x82460c8, detail=0,
    instance=0x836e060, emission_return=0x0, instance_and_params=0x8245ca0)
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/gobject/gsignal.c:3247
#21 0xb77e7fd9 in IA__g_signal_emit_valist (instance=0x836e060, signal_id=11,
    detail=0, var_args=0xb7336df0 "\300|4\b")
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/gobject/gsignal.c:2980
#22 0xb77e8436 in IA__g_signal_emit (instance=0x836e060, signal_id=11,
    detail=0)
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/gobject/gsignal.c:3037
#23 0xb784341c in gst_element_add_pad (element=0x836e060, pad=0x8347cc0)
    at gstelement.c:772
#24 0xb7355216 in gst_qtdemux_add_stream (qtdemux=0x836e060, stream=0x836de00,
    list=0x8370650) at qtdemux.c:3431
#25 0xb735766d in qtdemux_parse_trak (qtdemux=0x836e060, trak=0x83706c8)
    at qtdemux.c:4573
#26 0xb735bd82 in qtdemux_parse_tree (qtdemux=0x836e060) at qtdemux.c:5393
#27 0xb7364d53 in gst_qtdemux_loop_state_header (pad=0x83478d8)
    at qtdemux.c:1514
#28 gst_qtdemux_loop (pad=0x83478d8) at qtdemux.c:2368
#29 0xb78815b3 in gst_task_func (task=0x835f840) at gsttask.c:234
#30 0xb7882f27 in default_func (tdata=0x83a9540, pool=0x8248c10)
    at gsttaskpool.c:70
#31 0xb7764d06 in g_thread_pool_thread_proxy (data=0x82432a0)
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/glib/gthreadpool.c:265
#32 0xb77636bf in g_thread_create_proxy (data=0x8370490)
    at 
/build/buildd-glib2.0_2.20.5-1-i386-mDnYKw/glib2.0-2.20.5/glib/gthread.c:635
#33 0xb7fc14b5 in start_thread () from /lib/i686/cmov/libpthread.so.0
#34 0xb7f0ea5e in clone () from /lib/i686/cmov/libc.so.6
--


-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.30.4-vgn-b1vp (PREEMPT)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages python-gst0.10 depends on:
ii  libc6                     2.9-26         GNU C Library: Shared libraries
ii  libglib2.0-0              2.20.5-1       The GLib library of C routines
ii  libgstreamer-plugins-base 0.10.24-1      GStreamer libraries from the "base
ii  libgstreamer0.10-0        0.10.24-1      Core GStreamer libraries and eleme
ii  libxml2                   2.7.3.dfsg-2.1 GNOME XML library
ii  python                    2.5.4-2        An interactive high-level object-o
ii  python-central            0.6.11         register and build utility for Pyt
ii  python-gobject            2.18.0-1       Python bindings for the GObject li
ii  python-libxml2            2.7.3.dfsg-2.1 Python bindings for the GNOME XML
ii  python2.5                 2.5.4-1        An interactive high-level object-o

python-gst0.10 recommends no packages.

Versions of packages python-gst0.10 suggests:
ii  python-gst0.10-dbg            0.10.16-1  generic media-playing framework (P
pn  python-gst0.10-dev            <none>     (no description available)

-- no debconf information
# Lazygal, a lazy satic web gallery generator.
# Copyright (C) 2009 Alexandre Rossi <[email protected]>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


import threading
try:
    import pygst
    pygst.require('0.10')
    import gst
except ImportError:
    HAVE_GST = True
else:
    HAVE_GST = False


class OggTheoraConverter(object):

    def __init__(self):
        self.end_of_stream = threading.Event()

    def convert(self, input_file, output_file):
        self.pipeline = gst.Pipeline("Convert Pipeline")

        self.filesrc = gst.element_factory_make("filesrc", "source")
        self.filesrc.set_property("location", input_file)
        self.pipeline.add(self.filesrc)

        self.decode = gst.element_factory_make("decodebin", "decode")
        self.decode.connect("new-decoded-pad", self.on_dynamic_pad)
        self.pipeline.add(self.decode)
        self.filesrc.link(self.decode)

        self.convert = gst.element_factory_make("audioconvert", "convert")
        self.pipeline.add(self.convert)

        self.vorbisenc = gst.element_factory_make("vorbisenc", "vorbisenc")
        self.pipeline.add(self.vorbisenc)
        self.convert.link(self.vorbisenc)

        self.oggmux = gst.element_factory_make("oggmux", "oggmux")
        self.pipeline.add(self.oggmux)
        self.vorbisenc.link(self.oggmux)

        self.sink = gst.element_factory_make("filesink", "sink")
        self.sink.set_property("location", output_file)
        self.pipeline.add(self.sink)
        self.oggmux.link(self.sink)

        bus = self.pipeline.get_bus()
        bus.add_signal_watch()
        bus.connect("message::eos", self.on_end_of_stream)

        self.end_of_stream.clear()
        self.pipeline.set_state(gst.STATE_PLAYING)
        self.end_of_stream.wait()

    def on_dynamic_pad(self, dbin, pad, islast):
        pad.link(self.convert.get_pad("sink"))

    def on_end_of_stream(self, bus, message):
        self.end_of_stream.set()


if __name__ == '__main__':
    import sys, os
    converter = OggTheoraConverter()
    file_path = sys.argv[1]
    fn, ext = os.path.splitext(file_path)
    ogg_path = fn + '.ogg'
    converter.convert(file_path, ogg_path)


# vim: ts=4 sw=4 expandtab

--- End Message ---
--- Begin Message ---
Am Mittwoch, den 07.10.2009, 11:15 +0200 schrieb Alexandre Rossi:
> The problem came from the fact that I was not calling
> gobject.threads_init() at all.
> 
> So I guess this is not a bug.
> 
> I can be closed, thanks.
> 

Closing then :)

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil


--- End Message ---

Reply via email to