Details
-
Bug
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
5.3.2, 5.4.0
-
None
-
Linux (Debian Jessie), wpa_supplicant v2.3. Reproduced on various computers with different hardware.
Description
Hi,
I'm having a difficult-to-reproduce issue:
My program is talking to wpa_supplicant over dbus, calling wpa_supplicant's signalPoll() method over dbus at 1Hz. If left for a few days, it eventually gets stuck in a state where any further calls to signalPoll() hang for 25sec while hogging 100% CPU, then time out.
The error message I get on time-out is:
"Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."
The stack-trace during the 25sec hang is:
... #7 0xb4463a0f in dbus_pending_call_block () from /lib/i386-linux-gnu/libdbus-1.so.3 #8 0xb4452b95 in dbus_connection_send_with_reply_and_block () from /lib/i386-linux-gnu/libdbus-1.so.3 #9 0xb5e57dd9 in ?? () from /usr/lib/i386-linux-gnu/libQt5DBus.so.5 #10 0xb5e44290 in QDBusConnection::call(QDBusMessage const&, QDBus::CallMode, int) const () from /usr/lib/i386-linux-gnu/libQt5DBus.so.5 #11 0xb5e636be in QDBusAbstractInterface::callWithArgumentList(QDBus::CallMode, QString const&, QList<QVariant> const&) () from /usr/lib/i386-linux-gnu/libQt5DBus.so.5 #12 0xb5e64968 in QDBusAbstractInterface::call(QDBus::CallMode, QString const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&) () from /usr/lib/i386-linux-gnu/libQt5DBus.so.5 #13 0xb5e64b34 in QDBusAbstractInterface::call(QString const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&, QVariant const&) () from /usr/lib/i386-linux-gnu/libQt5DBus.so.5 #14 0xb4dc543b in wpa::WpaSupplicant::signalPoll (this=<optimized out>) ...
Running wpa_supplicant with extra debugging doesn't show up much, just:
I start wpa_supplicant with '-dd', here's what syslog has to say:
Dec 21 14:55:24 x17 wpa_supplicant[21763]: dbus: fi.w1.wpa_supplicant1.Interface.SignalPoll (/fi/w1/wpa_supplicant1/Interfaces/1) Dec 21 14:55:49 x17 wpa_supplicant[21763]: dbus: fi.w1.wpa_supplicant1.Interface.SignalPoll (/fi/w1/wpa_supplicant1/Interfaces/1) Dec 21 14:56:14 x17 wpa_supplicant[21763]: dbus: fi.w1.wpa_supplicant1.Interface.SignalPoll (/fi/w1/wpa_supplicant1/Interfaces/1) [ ... repeating at the same rate as the timeout messages in my client process ... ].
If I kill and restart my client process (but leave wpa_supplicant running) then everything is back to normal and working again.
I don't know whether the problem is in Qt, libdbus, or wpa_supplicant – not sure how to narrow it down further. Any hints?