Closed jhgorse closed 8 years ago
This looks like something that was just fixed:
commit 057aca2cda1e03a2208f21894c8e263b7f91d38d Author: Matthew Waters matthew@centricular.com Date: Tue Feb 16 19:59:13 2016 +1100
gtk(gl)sink: remove the signal handlers on finalize
It's possible that the sink element will be freed before the widget is
destroyed. When the widget was eventually destroyed, it was attempting to
access member variables of the freed sink struct which resulted in undefined
behaviour.
Fix by disconnecting our signal on finalize.
https://bugzilla.gnome.org/show_bug.cgi?id=762098
The stack trace in the bug report looks exactly like yours.
how to reproduce: start a session using the GUI app as caller or callee on OS X. End call on the other computer.
@tp-m confirmed that the patch for gst-plugins-bad works to fix this.
Don't know why it seemed to work at first. Perhaps testing error. Back to the same old crash:
(lldb) bt
* thread #1: tid = 0x86bd0f, 0x00007fff99ea9002 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread, stop reason = signal SIGABRT
* frame #0: 0x00007fff99ea9002 libsystem_kernel.dylib` __pthread_kill + 10
frame #1: 0x00007fff988995c5 libsystem_pthread.dylib` pthread_kill + 90
frame #2: 0x00007fff925c86e7 libsystem_c.dylib` abort + 129
frame #3: 0x0000000100b6c7ed libglib-2.0.0.dylib` g_thread_abort + 53
frame #4: 0x0000000100b6c7b8 libglib-2.0.0.dylib` g_mutex_lock + 87
frame #5: 0x000000010c467933 libgstgtksink.so` widget_destroy_cb(widget=0x000000010214c4b0, gtk_sink=0x00000001040a9c20) + 35 at gstgtkbasesink.c:154
frame #6: 0x0000000100ac641a libgobject-2.0.0.dylib` g_closure_invoke + 262
frame #7: 0x0000000100adb3ef libgobject-2.0.0.dylib` signal_emit_unlocked_R + 1783
frame #8: 0x0000000100adc042 libgobject-2.0.0.dylib` g_signal_emit_valist + 1876
frame #9: 0x0000000100adc712 libgobject-2.0.0.dylib` g_signal_emit + 134
frame #10: 0x00000001003be88e libgtk-3.0.dylib` gtk_widget_dispose + 216
frame #11: 0x0000000100acb07d libgobject-2.0.0.dylib` g_object_run_dispose + 46
frame #12: 0x0000000100239ea7 libgtk-3.0.dylib` gtk_container_destroy + 116
frame #13: 0x0000000100ac6473 libgobject-2.0.0.dylib` g_closure_invoke + 351
frame #14: 0x0000000100adb823 libgobject-2.0.0.dylib` signal_emit_unlocked_R + 2859
frame #15: 0x0000000100adc042 libgobject-2.0.0.dylib` g_signal_emit_valist + 1876
frame #16: 0x0000000100adc712 libgobject-2.0.0.dylib` g_signal_emit + 134
frame #17: 0x00000001003be88e libgtk-3.0.dylib` gtk_widget_dispose + 216
frame #18: 0x0000000100acb07d libgobject-2.0.0.dylib` g_object_run_dispose + 46
frame #19: 0x00000001002f6729 libgtk-3.0.dylib` gtk_overlay_forall + 39
frame #20: 0x0000000100239ea7 libgtk-3.0.dylib` gtk_container_destroy + 116
frame #21: 0x0000000100ac6473 libgobject-2.0.0.dylib` g_closure_invoke + 351
frame #22: 0x0000000100adb823 libgobject-2.0.0.dylib` signal_emit_unlocked_R + 2859
frame #23: 0x0000000100adc042 libgobject-2.0.0.dylib` g_signal_emit_valist + 1876
frame #24: 0x0000000100adc712 libgobject-2.0.0.dylib` g_signal_emit + 134
frame #25: 0x00000001003be88e libgtk-3.0.dylib` gtk_widget_dispose + 216
frame #26: 0x0000000100acb07d libgobject-2.0.0.dylib` g_object_run_dispose + 46
frame #27: 0x0000000100239ea7 libgtk-3.0.dylib` gtk_container_destroy + 116
frame #28: 0x0000000100ac641a libgobject-2.0.0.dylib` g_closure_invoke + 262
frame #29: 0x0000000100adb823 libgobject-2.0.0.dylib` signal_emit_unlocked_R + 2859
frame #30: 0x0000000100adc042 libgobject-2.0.0.dylib` g_signal_emit_valist + 1876
frame #31: 0x0000000100adc712 libgobject-2.0.0.dylib` g_signal_emit + 134
frame #32: 0x00000001003be88e libgtk-3.0.dylib` gtk_widget_dispose + 216
frame #33: 0x0000000100acb217 libgobject-2.0.0.dylib` g_object_unref + 208
frame #34: 0x0000000100238d93 libgtk-3.0.dylib` gtk_container_remove + 66
frame #35: 0x0000000100004045 one-video-gui` ovg_app_window_reset_state(win=0x000000010382a3c0) + 213 at ovg-appwin.c:742
frame #36: 0x0000000100b3213b libglib-2.0.0.dylib` g_main_context_dispatch + 276
frame #37: 0x0000000100b32425 libglib-2.0.0.dylib` g_main_context_iterate + 413
frame #38: 0x0000000100b3247d libglib-2.0.0.dylib` g_main_context_iteration + 55
frame #39: 0x00000001009d40d2 libgio-2.0.0.dylib` g_application_run + 410
frame #40: 0x0000000100004dff one-video-gui` main(argc=4, argv=0x00007fff5fbfc720) + 63 at ovg-main.c:74
frame #41: 0x00007fff8fb0a5ad libdyld.dylib` start + 1
Updated gst-plugins-bad to master 22e75a2, broke OS X gtk gui entirely. Don't know where I was before.
git reflog :)
Fixed by [18ac9d2].
@ystreet thanks for the tip!
bt all output: http://hastebin.com/oseruqunuw.coffee
fr s 35 frame #35: 0x0000000100004045 one-video-gui` ovg_app_window_reset_state(win=0x000000010388a3c0) + 213 at ovg-appwin.c:742 739 /* Remove old flowbox children */ 740 children = gtk_container_get_children (GTK_CONTAINER (priv->peers_video)); 741 for (l = children; l != NULL; l = l->next) -> 742 gtk_container_remove (GTK_CONTAINER (priv->peers_video), 743 GTK_WIDGET (l->data)); 744 g_list_free (children);
fr v (OvgAppWindow ) win = 0x000000010388a3c0 (GList ) children = 0x000000010756e420 (GList ) l = 0x000000010756e420 (OvgAppWindowPrivate ) priv = 0x000000010388a0f0
fr v priv->peers_video (GtkWidget *) priv->peers_video = 0x000000010403e210
fr v l->data (gpointer) l->data = 0x00000001038b0520