dbus_connection_send_with_reply_and_block eats 100% CPU then eventually times out

Alex Brooks a.brooks at marathon-targets.com
Sat Jan 31 13:58:23 PST 2015


On 01/02/15 00:49, Ralf Habacker wrote:
>
> Am 31.01.2015 um 13:08 schrieb Alex Brooks:
>>
>> Hi Ralf,
>>
>> Do you have a wlan0 on that computer?
>>
> no, wlp3s0 .. need to use -i i wlps3so
>>
>> (also note that the method in question (signalpoll)  is new in 
>> wpa_supplicant v2.3).
>>
> -> updated
> + need to run as root
>
>> On 31 Jan 2015 19:27, "Ralf Habacker" <ralf at habacker.de 
>> <mailto:ralf at habacker.de>> wrote:
>>
>>
>>     Am 31.01.2015 um 05:04 schrieb Alex Brooks:
>>     > Hi,
>>     >
>>     > I've been fighting for a long time with what now looks like a
>>     libdbus
>>     > bug.
>>     > I have a cut-down test program which calls a dbus method of
>>     > wpa_supplicant at 100Hz, it does this happily for several hours
>>     then
>>     > at some point the behaviour changes: any future calls sit at
>>     100% CPU
>>     > for 25sec then time out.
>>
> who eat's the cpu
> - dbus-daemon
> - wpa_supplicant
> - your client app

The client app.

>>     > I don't think the problem is on the wpa_supplicant side: other
>>     clients
>>     > can simultaneously make this call without any problems, and
>>     restarting
>>     > the client fixes it.
>>
> you did a strace of the related processes ?

Just of the client app (search for 'strace' on 
https://bugreports.qt.io/browse/QTBUG-43550).

>>     > [I'm running at 100Hz because the faster I run this loop, the
>>     faster> it reproduces the problem.  CPU load sits below 20%
>>     before I hit the
>>     > bug].
>>
> the test case contains
>
>     while ( true )  {
> ...
>       usleep(0.1 * 1e6);
>    }
>
> which is 10H z

Yes you're right sorry, the client code I posted was polling at 10Hz.  I 
subsequently increased to 100Hz which doesn't overload my processor, and 
reproduces faster.

>
> got it running as root
>
> Ralf
>>
>>     >
>>     > I posted details and a sample program as a Qt bug report (I'm using
>>     > the QDBus wrapper and thought it might be a Qt bug initially):
>>     > https://bugreports.qt.io/browse/QTBUG-43550
>>     >
>>     > Does anyone have any thoughts?
>>     I compiled the testcase on opensuse 13.1 x86_64 and did run:
>>
>>     sudo ./signalpoll
>>     getNetDevObjectPath(wlan0)
>>     getNetDevObjectPath : GetInterface result: QDBusMessage(type=Error,
>>     service="", error name="fi.w1.wpa_supplicant1.InterfaceUnknown",
>>     error
>>     message="wpa_supplicant knows nothing about this interface.",
>>     signature="", contents=([]) )
>>     terminate called after throwing an instance of 'std::string'
>>
>>     Regards
>>      Ralf m
>>
>


-- 
------------------------------
Dr Alex Brooks
Marathon Targets Pty Ltd
Ph: +61 2 8090 7202
Web: www.marathon-targets.com
------------------------------

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/dbus/attachments/20150201/73b937b7/attachment.html>


More information about the dbus mailing list