Hi, On 10/22/2012 12:53 PM, Lespiau, Damien wrote:
On Sun, Oct 21, 2012 at 1:00 PM, Dirk Meyer <dischi freevo org> wrote:self.pipeline = self.videotexture.get_pipeline() self.pipeline.get_state(0) it works until self is deleted due to garbage collection.get_pipeline() is annotated with: Return value: (transfer none): So the pygi should not unref the pointer it gets from get_pipeline. A way to start debugging this problem could be to break on clutter_gst_video_texture_finalize() and see where it is called from? (well, assuming this is the problem).
How can I hook into this with gdb running a Python program? Anyway, I reduced my code to a very small snippet und it still crashes. This time with (python:23263): GStreamer-CRITICAL **: Trying to dispose element pipeline, but it is in READY instead of the NULL state. You need to explicitly set elements to the NULL state before dropping the final reference, to allow them to clean up. This problem may also be caused by a refcounting bug in the application or some element. This sounds to me that pipeline is unrefed too often, the player should still be running. Just call the attached code with a video file as parameter. The code works with Ubuntu 12.04 and crashes with 12.10 (clutter versions in my previous post). Changing the print media.get_pipeline() to self.pipeline = media.get_pipeline() works. Regards, Dirk -- Clothes make the man. Naked people have little or no influence on society. - Mark Twain
Attachment:
vcrash.py
Description: Text Data