[Bug 784414] ges-timeline-element: emit 'deep-notify' signal in main thread

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Mon Jul 3 13:21:39 UTC 2017


https://bugzilla.gnome.org/show_bug.cgi?id=784414

--- Comment #15 from Thibault Saunier <tsaunier at gnome.org> ---
Review of attachment 354830:
 --> (https://bugzilla.gnome.org/review?bug=784414&attachment=354830)

I guess the same is true with the other tests, please check.

::: tests/check/ges/basic.c
@@ -101,0 +113,11 @@
+
+  /* Let the main loop run so the "deep-notify" signal gets emitted properly.
+   * We need to do this as "deep-notify" signals get emitted only in the main
... 8 more ...

Why does the callback get emited from a GSource and not directly in that test?

Check the stack:

(gdb) t a a bt
Thread 1 (Thread 0x7ffff7f8c740 (LWP 8868)):
#0  0x00007ffff6649670 in raise () from /usr/lib/libc.so.6
#1  0x00007ffff664ad00 in abort () from /usr/lib/libc.so.6
#2  0x00007ffff77b8e3a in g_assertion_message (domain=0x0, file=0x7ffff6c68938
"../subprojects/gst-editing-services/ges/ges-timeline-element.c", line=1298,
func=0x7ffff6c69a90 <__func__.33131> "child_prop_changed_cb",
message=0x555555a17be0 "code should not be reached") at
../subprojects/glib/glib/gtestutils.c:2433
#3  0x00007ffff77b8ecc in g_assertion_message_expr (domain=0x0,
file=0x7ffff6c68938
"../subprojects/gst-editing-services/ges/ges-timeline-element.c", line=1298,
func=0x7ffff6c69a90 <__func__.33131> "child_prop_changed_cb", expr=0x0) at
../subprojects/glib/glib/gtestutils.c:2456
#4  0x00007ffff6c47e22 in child_prop_changed_cb (child=0x555555b620d0,
arg=0x555555c00840, self=0x555555c0a200) at
../subprojects/gst-editing-services/ges/ges-timeline-element.c:1298
#5  0x00007ffff74dea14 in g_cclosure_marshal_VOID__PARAM
(closure=0x555555a3f820, return_value=0x0, n_param_values=2,
param_values=0x7fffffff5060, invocation_hint=0x7fffffff5010, marshal_data=0x0)
at ../subprojects/glib/gobject/gmarshal.c:1832
#6  0x00007ffff74d95ba in g_closure_invoke (closure=0x555555a3f820,
return_value=0x0, n_param_values=2, param_values=0x7fffffff5060,
invocation_hint=0x7fffffff5010) at ../subprojects/glib/gobject/gclosure.c:804
#7  0x00007ffff74f9a15 in signal_emit_unlocked_R (node=0x555555784d30,
detail=2529, instance=0x555555b620d0, emission_return=0x0,
instance_and_params=0x7fffffff5060) at
../subprojects/glib/gobject/gsignal.c:3635
#8  0x00007ffff74f8c53 in g_signal_emit_valist (instance=0x555555b620d0,
signal_id=1, detail=2529, var_args=0x7fffffff52e0) at
../subprojects/glib/gobject/gsignal.c:3391
#9  0x00007ffff74f91fe in g_signal_emit (instance=0x555555b620d0, signal_id=1,
detail=2529) at ../subprojects/glib/gobject/gsignal.c:3447
#10 0x00007ffff74e1b58 in g_object_dispatch_properties_changed
(object=0x555555b620d0, n_pspecs=1, pspecs=0x7fffffff54b0) at
../subprojects/glib/gobject/gobject.c:1064
#11 0x00007ffff7aa80f7 in gst_object_dispatch_properties_changed
(object=0x555555b620d0, n_pspecs=1, pspecs=0x7fffffff54b0) at
../subprojects/gstreamer/gst/gstobject.c:427
#12 0x00007ffff74e039d in g_object_notify_queue_thaw (object=0x555555b620d0,
nqueue=0x555555a2a400) at ../subprojects/glib/gobject/gobject.c:296
#13 0x00007ffff74e45d6 in g_object_setv (object=0x555555b620d0, n_properties=1,
names=0x7fffffff55b0, values=0x7fffffff5680) at
../subprojects/glib/gobject/gobject.c:2232
#14 0x00007ffff74e5658 in g_object_set_property (object=0x555555b620d0,
property_name=0x7fffefccbd81 "pattern", value=0x7fffffff5680) at
../subprojects/glib/gobject/gobject.c:2513
#15 0x00007ffff6c4837f in ges_timeline_element_set_child_property
(self=0x555555c0a200, property_name=0x7ffff6c634eb "pattern",
value=0x7fffffff5680) at
../subprojects/gst-editing-services/ges/ges-timeline-element.c:1432
#16 0x00007ffff6c1e83d in ges_track_element_set_child_property
(object=0x555555c0a200, property_name=0x7ffff6c634eb "pattern",
value=0x7fffffff5680) at
../subprojects/gst-editing-services/ges/ges-track-element.c:1151
#17 0x00007ffff6c268d6 in ges_video_test_source_set_pattern
(self=0x555555c0a200, pattern=GES_VIDEO_TEST_PATTERN_SMPTE) at
../subprojects/gst-editing-services/ges/ges-video-test-source.c:106
#18 0x00007ffff6c1445f in ges_test_clip_create_track_element
(clip=0x555555c080c0, type=GES_TRACK_TYPE_VIDEO) at
../subprojects/gst-editing-services/ges/ges-test-clip.c:342
#19 0x00007ffff6c091ac in ges_clip_create_track_element (clip=0x555555c080c0,
type=GES_TRACK_TYPE_VIDEO) at
../subprojects/gst-editing-services/ges/ges-clip.c:879
#20 0x00007ffff6c0972e in ges_clip_create_track_elements_func
(clip=0x555555c080c0, type=GES_TRACK_TYPE_VIDEO) at
../subprojects/gst-editing-services/ges/ges-clip.c:961
#21 0x00007ffff6c09541 in ges_clip_create_track_elements (clip=0x555555c080c0,
type=GES_TRACK_TYPE_VIDEO) at
../subprojects/gst-editing-services/ges/ges-clip.c:928
#22 0x00007ffff6bfea65 in add_object_to_tracks (timeline=0x555555bf4280,
clip=0x555555c080c0, track=0x0) at
../subprojects/gst-editing-services/ges/ges-timeline.c:2257
#23 0x00007ffff6bff92a in layer_object_added_cb (layer=0x555555bf3070,
clip=0x555555c080c0, timeline=0x555555bf4280) at
../subprojects/gst-editing-services/ges/ges-timeline.c:2482
#24 0x00007ffff56241c8 in ffi_call_unix64 () from /usr/lib/libffi.so.6
#25 0x00007ffff5623c2a in ffi_call () from /usr/lib/libffi.so.6
#26 0x00007ffff74db03b in g_cclosure_marshal_generic (closure=0x555555ba7b70,
return_gvalue=0x0, n_param_values=2, param_values=0x7fffffff5d00,
invocation_hint=0x7fffffff5cb0, marshal_data=0x0) at
../subprojects/glib/gobject/gclosure.c:1490
#27 0x00007ffff74d95ba in g_closure_invoke (closure=0x555555ba7b70,
return_value=0x0, n_param_values=2, param_values=0x7fffffff5d00,
invocation_hint=0x7fffffff5cb0) at ../subprojects/glib/gobject/gclosure.c:804
#28 0x00007ffff74f9cf4 in signal_emit_unlocked_R (node=0x555555b9d750,
detail=0, instance=0x555555bf3070, emission_return=0x0,
instance_and_params=0x7fffffff5d00) at
../subprojects/glib/gobject/gsignal.c:3705
#29 0x00007ffff74f8c53 in g_signal_emit_valist (instance=0x555555bf3070,
signal_id=61, detail=0, var_args=0x7fffffff5f80) at
../subprojects/glib/gobject/gsignal.c:3391
#30 0x00007ffff74f91fe in g_signal_emit (instance=0x555555bf3070, signal_id=61,
detail=0) at ../subprojects/glib/gobject/gsignal.c:3447
#31 0x00007ffff6c05bba in ges_layer_add_clip (layer=0x555555bf3070,
clip=0x555555c080c0) at ../subprojects/gst-editing-services/ges/ges-layer.c:631
#32 0x0000555555558342 in test_ges_scenario (__i__=0) at
../subprojects/gst-editing-services/tests/check/ges/basic.c:100
#33 0x00007ffff6e9cea2 in tcase_run_tfun_nofork (sr=0x555555a4a340,
tc=0x555555a62370, tfun=0x5555559fff80, i=0) at
../subprojects/gstreamer/libs/gst/check/libcheck/check_run.c:393
#34 0x00007ffff6e9c94c in srunner_iterate_tcase_tfuns (sr=0x555555a4a340,
tc=0x555555a62370) at
../subprojects/gstreamer/libs/gst/check/libcheck/check_run.c:243
#35 0x00007ffff6e9cddd in srunner_run_tcase (sr=0x555555a4a340,
tc=0x555555a62370) at
../subprojects/gstreamer/libs/gst/check/libcheck/check_run.c:377
#36 0x00007ffff6e9c7de in srunner_iterate_suites (sr=0x555555a4a340, sname=0x0,
tcname=0x0, include_tags=0x0, exclude_tags=0x0, print_mode=CK_NORMAL) at
../subprojects/gstreamer/libs/gst/check/libcheck/check_run.c:205
#37 0x00007ffff6e9db42 in srunner_run_tagged (sr=0x555555a4a340, sname=0x0,
tcname=0x0, include_tags=0x0, exclude_tags=0x0, print_mode=CK_NORMAL) at
../subprojects/gstreamer/libs/gst/check/libcheck/check_run.c:744
#38 0x00007ffff6e9dbe7 in srunner_run (sr=0x555555a4a340, sname=0x0,
tcname=0x0, print_mode=CK_NORMAL) at
../subprojects/gstreamer/libs/gst/check/libcheck/check_run.c:758
#39 0x00007ffff6e9d994 in srunner_run_all (sr=0x555555a4a340,
print_mode=CK_NORMAL) at
../subprojects/gstreamer/libs/gst/check/libcheck/check_run.c:696
#40 0x00007ffff6e8d8f0 in gst_check_run_suite (suite=0x5555559c2bc0,
name=0x55555556348a "ges", fname=0x555555562010
"../subprojects/gst-editing-services/tests/check/ges/basic.c") at
../subprojects/gstreamer/libs/gst/check/gstcheck.c:1057
#41 0x000055555555ea3f in main (argc=1, argv=0x7fffffff64c8) at
../subprojects/gst-editing-services/tests/check/ges/basic.c:942
(gdb) 


We are in the main thread when the element property changed and we should be
emitting from the main thread and not on an idle GSource here, please check why
it is not the case and do not change the testcase as it should not be needed :)

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list