Bug 17516 - xembedsniproxy (legacy tray icons support on plasma5) segfaults at times
Summary: xembedsniproxy (legacy tray icons support on plasma5) segfaults at times
Status: RESOLVED FIXED
Alias: None
Product: Mageia
Classification: Unclassified
Component: RPM Packages (show other bugs)
Version: Cauldron
Hardware: All Linux
Priority: Normal normal
Target Milestone: ---
Assignee: Rémi Verschelde
QA Contact:
URL:
Whiteboard:
Keywords: UPSTREAM
Depends on:
Blocks: 17523
  Show dependency treegraph
 
Reported: 2016-01-17 14:01 CET by Rémi Verschelde
Modified: 2016-01-20 15:58 CET (History)
1 user (show)

See Also:
Source RPM: plasma-workspace
CVE:
Status comment:


Attachments

Description Rémi Verschelde 2016-01-17 14:01:37 CET
It still need to be further investigated, but since I've upgraded to cauldron/plasma5 I've noticed that the legacy tray icons sometimes disappear from the plasma5 system tray.

After some research I've seen that the support for those legacy icons is a new feature in Plasma 5.3, and is handle by the "xembedsniproxy" tool, which is autostarted (/etc/xdg/autostart/xembedsniproxy.desktop).

So I guess it might crash at times. Launching it again from a terminal with "xembedsniproxy" makes the tray icons reappear - I still haven't managed to get it to crash once started manually sadly, since it would give us more logs. I'll comment when I have more info.

Reproducible: 

Steps to Reproduce:
Comment 1 Rémi Verschelde 2016-01-17 17:19:43 CET
So far it seems to always be the same:
- the autostarted xembedsniproxy stops a couple minutes after the start (I can't tell if it's a crash or a timeout of some sort)
- if started manually from a terminal, it seems to work just fine for a long time.
Comment 2 Rémi Verschelde 2016-01-17 21:46:35 CET
I finally got a crash after running xembedsniproxy from within a terminal, and it seems to be a segmentation fault:

kde.xembedsniproxy: Skip transparent xembed icon for 71380901 "hexchat"
kde.xembedsniproxy: No xembed icon for 71380901 "hexchat"
kde.xembedsniproxy: trying to dock window  67108893
kde.xembedsniproxy: adding damage watch for  67108893
kde.xembedsniproxy: Skip transparent xembed icon for 67108893 "mgaapplet"
kde.xembedsniproxy: No xembed icon for 67108893 "mgaapplet"
Segmentation fault

I can't say for now if it's related to the output about mgaapplet as there is no timestamp; from now on I'll try to run it through gdb to try to catch more info.
Rémi Verschelde 2016-01-17 21:50:55 CET

Summary: xembedsniproxy (legacy tray icons support on plasma5) seems to crash at times => xembedsniproxy (legacy tray icons support on plasma5) segfaults at times

Comment 3 Rémi Verschelde 2016-01-17 21:54:45 CET
I finally managed to get some info via gdb:

kde.xembedsniproxy: trying to dock window  75497483
kde.xembedsniproxy: adding damage watch for  75497483

Program received signal SIGSEGV, Segmentation fault.
0x000000000040e697 in SNIProxy::SNIProxy (this=0x709d30, wid=75497483, parent=<optimized out>) at /usr/src/debug/plasma-workspace-5.5.3/xembed-sni-proxy/sniproxy.cpp:165
165         if (clientGeom->width > s_embedSize || clientGeom->height > s_embedSize )
Comment 4 Rémi Verschelde 2016-01-17 22:00:16 CET
And corresponding gdb backtrace:

(gdb) run
Starting program: /usr/bin/xembedsniproxy 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffec1d3700 (LWP 9695)]
kde.xembedsniproxy: starting
[New Thread 0x7fffdfd5d700 (LWP 9701)]
kde.xembedsniproxy: Manager selection claimed
kde.xembedsniproxy: trying to dock window  14681962
kde.xembedsniproxy: adding damage watch for  14681962
kde.xembedsniproxy: Resizing window 14681962 "clementine" from w*h 960 432
kde.xembedsniproxy: trying to dock window  71658846
kde.xembedsniproxy: adding damage watch for  71658846
kde.xembedsniproxy: Resizing window 71658846 "hexchat" from w*h 48 48
kde.xembedsniproxy: trying to dock window  69206060
kde.xembedsniproxy: adding damage watch for  69206060
kde.xembedsniproxy: Skip transparent xembed icon for 69206060 "net_applet"
kde.xembedsniproxy: No xembed icon for 69206060 "net_applet"
kde.xembedsniproxy: Scaling pixmap of window 69206060 "net_applet" from w*h 16 16
akde.xembedsniproxy: trying to dock window  75497475
kde.xembedsniproxy: adding damage watch for  75497475
kde.xembedsniproxy: Skip transparent xembed icon for 75497475 "mgaapplet"
kde.xembedsniproxy: No xembed icon for 75497475 "mgaapplet"
kde.xembedsniproxy: Skip transparent xembed icon for 75497475 "mgaapplet"
kde.xembedsniproxy: No xembed icon for 75497475 "mgaapplet"
kde.xembedsniproxy: trying to undock window  75497475
kde.xembedsniproxy: trying to dock window  75497483
kde.xembedsniproxy: adding damage watch for  75497483

Program received signal SIGSEGV, Segmentation fault.
0x000000000040e697 in SNIProxy::SNIProxy (this=0x709d30, wid=75497483, parent=<optimized out>) at /usr/src/debug/plasma-workspace-5.5.3/xembed-sni-proxy/sniproxy.cpp:165
165         if (clientGeom->width > s_embedSize || clientGeom->height > s_embedSize )
Comment 5 Rémi Verschelde 2016-01-17 22:00:42 CET
Sorry, this is the backtrace I meant to copy:

(gdb) bt
#0  0x000000000040e697 in SNIProxy::SNIProxy(unsigned int, QObject*) (this=0x709d30, wid=75497483, parent=<optimized out>)
    at /usr/src/debug/plasma-workspace-5.5.3/xembed-sni-proxy/sniproxy.cpp:165
#1  0x000000000040c3f3 in FdoSelectionManager::dock(unsigned int) (this=this@entry=0x7fffffffd970, winId=75497483)
    at /usr/src/debug/plasma-workspace-5.5.3/xembed-sni-proxy/fdoselectionmanager.cpp:157
#2  0x000000000040c55c in FdoSelectionManager::nativeEventFilter(QByteArray const&, void*, long*) (this=0x7fffffffd970, eventType=..., message=0x7fffe4004ee0, result=<optimized out>)
    at /usr/src/debug/plasma-workspace-5.5.3/xembed-sni-proxy/fdoselectionmanager.cpp:124
#3  0x00007ffff6958237 in QAbstractEventDispatcher::filterNativeEvent(QByteArray const&, void*, long*) (this=<optimized out>, eventType=..., message=message@entry=0x7fffe4004ee0, result=result@entry=0x7fffffffd478) at kernel/qabstracteventdispatcher.cpp:460
#4  0x00007fffee33a0c5 in QXcbConnection::handleXcbEvent(xcb_generic_event_t*) (this=this@entry=0x641be0, event=event@entry=0x7fffe4004ee0) at qxcbconnection.cpp:1062
#5  0x00007fffee33afb6 in QXcbConnection::processXcbEvents() (this=0x641be0) at qxcbconnection.cpp:1672
#6  0x00007ffff698706a in QObject::event(QEvent*) (this=0x641be0, e=<optimized out>) at kernel/qobject.cpp:1256
#7  0x00007ffff695b1ea in QCoreApplication::notify(QObject*, QEvent*) (event=<optimized out>, receiver=<optimized out>) at kernel/qcoreapplication.cpp:1088
#8  0x00007ffff695b1ea in QCoreApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1074
#9  0x00007ffff695b348 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x641be0, event=event@entry=0x7fffe4006d40) at kernel/qcoreapplication.cpp:1013
#10 0x00007ffff695d16b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (event=0x7fffe4006d40, receiver=<optimized out>) at kernel/qcoreapplication.h:227
#11 0x00007ffff695d16b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x635710)
    at kernel/qcoreapplication.cpp:1648
#12 0x00007ffff695d638 in QCoreApplication::sendPostedEvents(QObject*, int) (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1506
#13 0x00007ffff69ad1d3 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x6910c0) at kernel/qeventdispatcher_glib.cpp:270
#14 0x00007ffff2e70267 in g_main_context_dispatch (context=0x7fffe40016f0) at gmain.c:3154
#15 0x00007ffff2e70267 in g_main_context_dispatch (context=context@entry=0x7fffe40016f0) at gmain.c:3769
#16 0x00007ffff2e70498 in g_main_context_iterate (context=context@entry=0x7fffe40016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840
#17 0x00007ffff2e7053c in g_main_context_iteration (context=0x7fffe40016f0, may_block=may_block@entry=1) at gmain.c:3901
#18 0x00007ffff69ad5e6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x68edf0, flags=...) at kernel/qeventdispatcher_glib.cpp:417
#19 0x00007ffff695903a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd8d0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#20 0x00007ffff6961541 in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1283
#21 0x00007ffff6c9d2cc in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1573
#22 0x000000000040a02f in main(int, char**) (argc=1, argv=<optimized out>) at /usr/src/debug/plasma-workspace-5.5.3/xembed-sni-proxy/main.cpp:68
Comment 6 Rémi Verschelde 2016-01-17 22:00:55 CET
I've opened a bug report upstream with the same info: https://bugs.kde.org/show_bug.cgi?id=358143
Comment 7 Rémi Verschelde 2016-01-18 11:29:29 CET
Upstream maintainer said that it's fixed in master and will thus be fixed in 5.5.4. The relevant commit is probably https://github.com/KDE/plasma-workspace/commit/6232362cca7021e5b436d267e07f9d6875a20a4c if we want to backport it.

I'll give it a try locally and see if it's worth pushing, else we can also just wait for 5.5.4 in ~1 week :)

Source RPM: (none) => plasma-workspace

Rémi Verschelde 2016-01-18 11:29:37 CET

Assignee: mageia => rverschelde

Rémi Verschelde 2016-01-19 09:37:00 CET

Keywords: (none) => UPSTREAM
Blocks: (none) => 17523

Comment 8 Nicolas Lécureuil 2016-01-20 15:58:05 CET
Patch added on cauldron.

Status: NEW => RESOLVED
CC: (none) => mageia
Resolution: (none) => FIXED


Note You need to log in before you can comment on or make changes to this bug.