dbus_connection_send_with_reply_and_block eats 100% CPU then eventually times out

Alex Brooks a.brooks at marathon-targets.com
Mon Feb 2 22:51:57 PST 2015


Hi Ralf,

I tried with the modifications you suggest (tracking number of 
iterations and time).
There's a magic number: in all cases it starts failing after 300274 
iterations (100% repeatable):

signalInfo rssi=-42
TRACE(signalpoll_onefile.cpp): iter=1, relapsed=0.00127s, dt=0.001258s
signalInfo rssi=-42
TRACE(signalpoll_onefile.cpp): iter=2, relapsed=0.012663s, dt=0.001231s
signalInfo rssi=-42
TRACE(signalpoll_onefile.cpp): iter=3, relapsed=0.023954s, dt=0.00118s
signalInfo rssi=-42
TRACE(signalpoll_onefile.cpp): iter=4, relapsed=0.035219s, dt=0.001154s
signalInfo rssi=-42
TRACE(signalpoll_onefile.cpp): iter=5, relapsed=0.046478s, dt=0.001148s
signalInfo rssi=-42
TRACE(signalpoll_onefile.cpp): iter=6, relapsed=0.057801s, dt=0.001208s
signalInfo rssi=-42
TRACE(signalpoll_onefile.cpp): iter=7, relapsed=0.069105s, dt=0.001194s
...
... wait ~55min ...
...
signalInfo rssi=-45
TRACE(signalpoll_onefile.cpp): iter=300268, relapsed=3456.71s, dt=0.001268s
signalInfo rssi=-45
TRACE(signalpoll_onefile.cpp): iter=300269, relapsed=3456.72s, dt=0.001208s
signalInfo rssi=-42
TRACE(signalpoll_onefile.cpp): iter=300270, relapsed=3456.74s, dt=0.001236s
signalInfo rssi=-38
TRACE(signalpoll_onefile.cpp): iter=300271, relapsed=3456.75s, dt=0.001205s
signalInfo rssi=-42
TRACE(signalpoll_onefile.cpp): iter=300272, relapsed=3456.76s, dt=0.001225s
signalInfo rssi=-41
TRACE(signalpoll_onefile.cpp): iter=300273, relapsed=3456.77s, dt=0.001214s
signalInfo rssi=-47
TRACE(signalpoll_onefile.cpp): iter=300274, relapsed=3456.78s, dt=0.001289s
Error: wpa_supplicant DBus error in signalPoll: 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.
TRACE(signalpoll_onefile.cpp): iter=300275, relapsed=3481.79s, dt=24.9997s
Error: wpa_supplicant DBus error in signalPoll: 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.
TRACE(signalpoll_onefile.cpp): iter=300276, relapsed=3506.8s, dt=24.9995s
Error: wpa_supplicant DBus error in signalPoll: 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.
TRACE(signalpoll_onefile.cpp): iter=300277, relapsed=3531.81s, dt=24.9994s



Alex


On 01/02/15 03:12, Ralf Habacker wrote:
>
> Am 31.01.2015 um 16:10 schrieb Ralf Habacker:
>>
>> Am 31.01.2015 um 14:49 schrieb Ralf Habacker:
>>>> 5 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.
>>>>
>> After running about 54 minutes I got:
>>
>>  counts      time (ms)
>> 300272 3245606 signalInfo rssi=-63
>> 300273 3245616 signalInfo rssi=-63
>> Error: wpa_supplicant DBus error in signalPoll: 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.
>>
> second run gave same results:
> ...
>
> 300272 3548324 1 signalInfo rssi=-57
> 300273 3548413 79 signalInfo rssi=-59
> Error: wpa_supplicant DBus error in signalPoll: 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.
>
> Sounds as a kind of limits reached. The counts are collected as shown 
> below:
>
>     while ( true )
>     {
>         try {
>             int a = timer.elapsed();
>             int rssi = signalPoll( *netDevInterfaceInterface_ );
>             int b = timer.elapsed();
>             cout << i++ << " " << b << " " << (b-a) << " signalInfo 
> rssi=" << rssi << endl;
>         }
>
>> Ralf
>>
>>
>> _______________________________________________
>> dbus mailing list
>> dbus at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dbus
>


-- 
------------------------------
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/20150203/559cac0e/attachment-0001.html>


More information about the dbus mailing list