Hi,

I was trying to use gstreamer's dfbvideosink, but it segfaults:

(gdb) bt
#0  0x76911184 in dfb_windowstack_lock (stack=0x0) at 
../../../src/core/windowstack.c:397
#1  0x76911bd8 in dfb_windowstack_cursor_enable (core=<value optimized out>, 
stack=0x0, enable=<value optimized out>) at ../../../src/core/windowstack.c:599
#2  0x768df9f0 in CoreWindowStack_CursorEnable (obj=<value optimized out>, 
enable=<value optimized out>) at ./CoreWindowStack.cpp:134
#3  0x769d667c in gst_dfbvideosink_setup (dfbvideosink=0xfe010) at 
dfbvideosink.c:750
#4  0x769d9250 in gst_dfbvideosink_change_state (element=0xfe010, 
transition=GST_STATE_CHANGE_NULL_TO_READY) at dfbvideosink.c:1433
#5  0x76f412b4 in gst_element_change_state (element=0xfe010, transition=<value 
optimized out>) at gstelement.c:2761
#6  0x76f41d08 in gst_element_set_state_func (element=0xfe010, state=<value 
optimized out>) at gstelement.c:2717
#7  0x76f40fe0 in gst_element_set_state (element=0xfe010, 
state=GST_STATE_READY) at gstelement.c:2618
#8  0x76f2ccbc in gst_bin_element_set_state (element=0x100078, transition=0) at 
gstbin.c:2209
#9  gst_bin_change_state_func (element=0x100078, transition=0) at gstbin.c:2518
#10 0x76f65350 in gst_pipeline_change_state (element=0x100078, 
transition=GST_STATE_CHANGE_NULL_TO_READY) at gstpipeline.c:482
#11 0x76f412b4 in gst_element_change_state (element=0x100078, transition=<value 
optimized out>) at gstelement.c:2761
#12 0x76f41d08 in gst_element_set_state_func (element=0x100078, state=<value 
optimized out>) at gstelement.c:2717
#13 0x76f40fe0 in gst_element_set_state (element=0x100078, 
state=GST_STATE_PAUSED) at gstelement.c:2618
#14 0x0000ada4 in main (argc=1996478440, argv=0x1) at gst-launch.c:1104

Looking at the code
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/ext/directfb/dfbvideosink.c?h=0.10&id=28e08b18ab831de46b2f6133c8fb48cf207823df

It seems that DirectFB doesn't like any cursor handling anymore before
CoreLayerContext_GetPrimaryRegion() was called (via
IDirectFBDisplayLayer_GetSurface()), as the layer's stack == NULL before
that.

Now what is the correct way to fix this?

Sure I can probably modify dfbvideosink to enable the cursor only after
the ::GetSurface(), but this seems to be a general problem? Any
application could try to do that.

DirectFB shouldn't crash at least... I think


Cheers,
Andre'


_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to