GNOME Bugzilla – Bug 768889
call-window: properly remove the farstream element notifiers
Last modified: 2017-03-13 16:41:04 UTC
Created attachment 331632 [details] [review] call-window: properly remove the fs element notifiers I triggered this crash while using empathy-call: Program received signal SIGSEGV, Segmentation fault. [Swit hing to Thread 0x7feaaf7fe700 (LWP 12589)] object_remove_closure (data=0x7fead84994b0, closure=0x7feaa4017370) at gobject.c:3909 3909 for (i = 0; i < carray->n_closures; i++) Missing separate debuginfos, use: dnf debuginfo-install dconf-0.24.0-2.fc23.x86_64 ffmpeg-libs-2.8.7-1.fc23.x86_64 GConf2-3.2.6-15.fc23.x86_64 gstreamer1-libav-1.6.4-1.1.fc23.x86_64 gstreamer1-plugins-bad-free-1.6.4-1.fc23.x86_64 gstreamer1-plugins-bad-free-extras-1.6.4-1.fc23.x86_64 gstreamer1-plugins-bad-freeworld-1.6.3-1.fc23.x86_64 gstreamer1-plugins-ugly-1.6.3-1.fc23.x86_64 gstreamer1-vaapi-0.7.0-0.2.fc23.x86_64 lame-libs-3.99.5-5.fc23.x86_64 libcroco-0.6.8-7.fc23.x86_64 libmad-0.15.1b-17.fc23.x86_64 libmpeg2-0.5.1-11.fc22.x86_64 libmpg123-1.22.4-1.fc23.x86_64 librsvg2-2.40.16-1.fc23.x86_64 libsrtp-1.5.4-3.fc23.x86_64 libva-1.6.2-2.fc23.x86_64 libva-intel-driver-1.6.2-1.fc23.x86_64 mjpegtools-libs-2.1.0-5.fc22.x86_64 opencore-amr-0.1.3-4.fc22.x86_64 openjpeg-libs-1.5.1-15.fc23.x86_64 opus-1.1.2-1.fc23.x86_64 schroedinger-1.0.11-9.fc23.x86_64 soxr-0.1.2-1.fc23.x86_64 twolame-libs-0.3.13-4.fc22.x86_64 x264-libs-0.148-5.20160118git5c65704.fc23.x86_64 x265-libs-1.8-1.fc23.x86_64 xvidcore-1.3.4-2.fc23.x86_64 (gdb) inf thr Id Target Id Frame * 8001 Thread 0x7feaaf7fe700 (LWP 12589) "special-source-" object_remove_closure (data=0x7fead84994b0, closure=0x7feaa4017370) at gobject.c:3909 7999 Thread 0x7fea8dff8700 (LWP 12587) "videotestsrc0:s" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 7994 Thread 0x7fea937fc700 (LWP 12582) "rtpjitterbuffer" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 7992 Thread 0x7feaae7fc700 (LWP 12580) "queue:src" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 7990 Thread 0x7feaaffff700 (LWP 12578) "rtpjitterbuffer" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 7988 Thread 0x7feacd194700 (LWP 12576) "rtpdtmfsrc400:s" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 7987 Thread 0x7feacd995700 (LWP 12575) "dtmfsrc400:src" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 7986 Thread 0x7feace196700 (LWP 12574) "nicesrc1281:src" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 7985 Thread 0x7feacf198700 (LWP 12573) "nicesrc1280:src" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 7984 Thread 0x7feacfba0700 (LWP 12572) "nicesrc1279:src" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 7983 Thread 0x7feae4e01700 (LWP 12571) "nicesrc1278:src" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 7979 Thread 0x7feaadffb700 (LWP 12567) "pulsesrc0:src" syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 21 Thread 0x7feaaeffd700 (LWP 5149) "threaded-ml" 0x00007feb251b2b1d in poll () at ../sysdeps/unix/syscall-template.S:84 4 Thread 0x7feb07fff700 (LWP 4837) "dconf worker" 0x00007feb251b2b1d in poll () at ../sysdeps/unix/syscall-template.S:84 3 Thread 0x7feb0db1e700 (LWP 4825) "gmain" 0x00007feb251b2b1d in poll () at ../sysdeps/unix/syscall-template.S:84 2 Thread 0x7feb0d31d700 (LWP 4826) "gdbus" 0x00007feb251b2b1d in poll () at ../sysdeps/unix/syscall-template.S:84 1 Thread 0x7feb32ffaa80 (LWP 4823) "lt-empathy-call" handler_lookup (instance=instance@entry=0x2a1e0b0, handler_id=handler_id@entry=0, closure=closure@entry=0x8696c50, signal_id_p=signal_id_p@entry=0x7fff90f3943c) at gsignal.c:489 (gdb) bt
+ Trace 236465
From this gdb session, it appears that FsElementAddedNotifier notifier that is removed in empathy_call_window_conference_removed_cb() is still in use in the rtp-special-source stop thread. I think it happens because empathy forget to do an fs_element_added_notifier_remove() on the notifiers before unreferencing them. See the pointer on the notifier 0x7fead84994b0, being both unfreeed in thread 1, and still used in thread 8001.
Review of attachment 331632 [details] [review]: No clue if this is right, but I'll trust you! ::: src/empathy-call-window.c @@ +2515,2 @@ static void +empathy_call_window_add_notifier_remove(gpointer data, gpointer user_data) There should be a space before the opening parentheses here. Will push with this fixup.
Attachment 331632 [details] pushed as 395d59b - call-window: properly remove the fs element notifiers