Okay, there several places where MLT Producer isn't checked for being valid and used later:
thumbnail.py
cli_render.py
video.py
My crash is related to video.py.
Attached patch _tries_ to fix the problem. However, in the video.py case my fix is insufficient - although I return and don't use producer immediately, I still get a crash later:
(gdb) bt
#0 mlt_properties_get (self=0x0, name=0x80cd0f57a "eof")
at mlt_properties.c:484
#1 0x000000080cd03b0f in mlt_producer_seek (self=0x0, position=0)
at mlt_producer.c:296
#2 0x000000080cae3f7e in Mlt::Producer::seek (this=0x81b9ab0a0, position=0)
at MltProducer.cpp:111
#3 0x000000080c88a5d4 in _wrap_Producer_seek (args=0x81ba24e18)
at mlt_wrap.cxx:11636
#4 0x0000000000483ba8 in PyEval_EvalFrameEx ()
....
From a quick glance I don't see a proper path to return failure to upper functions: load_profile, load_xml, etc... These functions are expect to succeed always. So, I suppose, later the object is called again and MLT code is entered.
I don't have enough time and python skills to write a more thorough patch, that would touch more code :(
Okay, there several places where MLT Producer isn't checked for being valid and used later:
thumbnail.py
cli_render.py
video.py
My crash is related to video.py.
Attached patch _tries_ to fix the problem. However, in the video.py case my fix is insufficient - although I return and don't use producer immediately, I still get a crash later:
(gdb) bt c:484
#0 mlt_properties_get (self=0x0, name=0x80cd0f57a "eof")
at mlt_properties.
#1 0x000000080cd03b0f in mlt_producer_seek (self=0x0, position=0)
at mlt_producer.c:296
#2 0x000000080cae3f7e in Mlt::Producer::seek (this=0x81b9ab0a0, position=0)
at MltProducer.cpp:111
#3 0x000000080c88a5d4 in _wrap_Producer_seek (args=0x81ba24e18)
at mlt_wrap.cxx:11636
#4 0x0000000000483ba8 in PyEval_EvalFrameEx ()
....
From a quick glance I don't see a proper path to return failure to upper functions: load_profile, load_xml, etc... These functions are expect to succeed always. So, I suppose, later the object is called again and MLT code is entered.
I don't have enough time and python skills to write a more thorough patch, that would touch more code :(