This is a multi-part message in MIME format. --------------040507090407030601090601 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Thiago Macieira schrieb: > On Tuesday 19 February 2008 15:56:34 Ralf Habacker wrote: > >> ... but this does not help to find a solution for the reported issue, >> which requires to work together to find a way out or this problem will >> still remain. >> >> 1. Which condition enables dbus to detect that a connection is close and >> where in the dbus code is this located ? This is required to generate >> testcases and/or find the right place for additional debug messages in >> dbus code. >> > > It detects that the connection closed in its select() main loop. When one > client goes away, the (Unix) socket closes automatically and immediately. The > dbus-daemon then gets a read notification. When it tries to read, it gets 0 > bytes, indicating EOF. Then it proceeds to release all resources associated > with that client. > > That's on Unix. I have no idea how you guys implemented the mainloop on > Windows. I know the Qt event loop uses a WSAAsyncSelect, but that's not > necessary for dbus-daemon (since it has no GUI). It can use a normal, > Unix-style select() with timeout. > it does uses select() too, there is a platform indendepent wrapper called _dbus_poll() > > What happens to non-KDE Qt applications? How about other D-Bus applications > running with libdbus-1? Or without it (like the Java or NDesk/C# bindings)? > I have append a qt based testcase using qdbus to analys the registerService()/unregisterService() functions first test scenario cmd> start registertest 30 => run registerService and wait 30 sec cmd> registertest 3 => run registerService and wait 3 sec -> second process cannot register name, which is the expected behavior second test scenario cmd> registertest 3 nounregister && registertest 3 nounregister => run registerService without unregisterService() for 3 sec, then run another registerService without unregisterService() for 3 sec this simulates the situation, that unregisterService() wasn't called on application exit. -> the second process can register the name without any problems, which means windbus using QDBus works as expected. How to proceed now ? Ralf --------------040507090407030601090601 Content-Type: application/x-zip-compressed; name="windbus-qt-test.zip" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="windbus-qt-test.zip" UEsDBAoAAAAAAHC4UzgAAAAAAAAAAAAAAAANAAAAd2luZGJ1cy10ZXN0L1BLAwQKAAAAAABL rVM4AAAAAAAAAAAAAAAAEwAAAHdpbmRidXMtdGVzdC9jbWFrZS9QSwMEFAAAAAgAUa9TOCNx GaJsAQAAbwIAABsAAAB3aW5kYnVzLXRlc3QvQ01ha2VMaXN0cy50eHR1Ud1OwjAUvifhHU7Q i5qoxJ8XADYjEZjsJ8SrprRnUDfW2XaBhPDudmygmLiLJT1fv7/TUqtP5JZsZSGWlbmzaOxN t9PtXMF2jRrBKsiVyiCV2lhIlQa+YRnCRokqR3MLS3RDhOv9aDp482kYBPGhP23QPkgDfI08 Q9HtGLSkuTQNvGTi0/dB/Aq9EzMKknDkU28cHvpHj37r0XOBjmwg85gmkU/nsTdMIng4AqmL TkvGM7ZCMrfPx6FMgSzGs6dHdwL3yYLnlUCykMXT45RxrUyLMCH8XZm7DnqhWVmiJg7BQsi0 UTjrzYIY5nFrTl+CZOY5bIPG1M5RPIhdpt5XvUcoVL2sqhC9RuwffqtdF3tuJpd5qZDaPY/S Eg253jv2eDaaJJ4fHdzGz2LttFneTy+KO+SVZcscicaVNBZ1/cDw+3DPy7KlWKZXaGkui8z9 lprVthfMk+koCH06GQ/DQfhxkeQ8bGr/rfYNUEsDBAoAAAAAAGWvUzgAAAAAAAAAAAAAAAAb AAAAd2luZGJ1cy10ZXN0L2NtYWtlL21vZHVsZXMvUEsDBBQAAAAIAOp1Rjhn4zp0KAIAAKsE AAApAAAAd2luZGJ1cy10ZXN0L2NtYWtlL21vZHVsZXMvRmluZFBTREsuY21ha2Wtk11v2jAU hu/zK46gFyBR2nU30zRNS/OxRi0fSkKnXSE3PiHWEhvZBoQq/vtOArShpdIuFuUitt/z+D2v nS6EQnKwBcK0ZDZXuoLEvwchjWUlzQglwelCWggDleKrEoFjLiQamoUpaed+FA9gU6BGsApo jZ+yohbrpSgaew8zP2gVNyYKZBy1AUbjUmXMIm+VROk88eJomrZLUK6FVrJCacm2sGAyLZbW gDBHBLwwwsls7A8gyiFnpcEBcAVSWbB6W5tfGWx0TpcqPLXcarEoLPSyPtxcX38ZQMzKHO7Y E8v+oB7AN03jYXEY/8g1okQ75Pi9IcTIhbFaPK2aHJnk9Q61McpDbcgYyzKluZAL2r3pxqKu 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 yRpu4QNwowRzoT8WP6PJYj6fQwy3cxrLGrlXqgCprNSYi4oq7+Hf+5Du48XHcSVkXuDuqAxr sk5hTMKmsPvy9Z49WmFYFEUefs3eCWR7W+1Qn0SKlLURJA7ARhcYyohVRRPaZdFMtEeYsQie nmDEhlRvwFsFTqMvjLz247G+MGJdrSDccCmVgYOQGZgjwvaGCKDhor8+oQ6XLVSjsVrCwm/8 Czp7W2sxI21GWzxX2td9k7RxzQYLDVZm9ivDmdJ5GMFofdXMOG5Ad+dcUVfZ89JSZYsMXHXn e688QVfQUPeBFxU2tdVfuu8Z/saU0T2f6+lBxmMY9RvrVT0Udl1H9/hWzs8EtJuTpoF7RPG6 f56wVVpzUCt954WgNvLqXtR24oXF0E09pl6zHh2SM9fhqLXSPXi9Jjg0Xna9454A9c1/UEsB AhQACgAAAAAAcLhTOAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAQAAAAAAAAAHdpbmRidXMtdGVz dC9QSwECFAAKAAAAAABLrVM4AAAAAAAAAAAAAAAAEwAAAAAAAAAAABAAAAArAAAAd2luZGJ1 cy10ZXN0L2NtYWtlL1BLAQIUABQAAAAIAFGvUzgjcRmibAEAAG8CAAAbAAAAAAAAAAAAIAAA AFwAAAB3aW5kYnVzLXRlc3QvQ01ha2VMaXN0cy50eHRQSwECFAAKAAAAAABlr1M4AAAAAAAA AAAAAAAAGwAAAAAAAAAAABAAAAABAgAAd2luZGJ1cy10ZXN0L2NtYWtlL21vZHVsZXMvUEsB AhQAFAAAAAgA6nVGOGfjOnQoAgAAqwQAACkAAAAAAAAAAAAgAAAAOgIAAHdpbmRidXMtdGVz dC9jbWFrZS9tb2R1bGVzL0ZpbmRQU0RLLmNtYWtlUEsBAhQAFAAAAAgAaXZNOMbCUFNSKQAA PM4AACgAAAAAAAAAAAAgAAAAqQQAAHdpbmRidXMtdGVzdC9jbWFrZS9tb2R1bGVzL0ZpbmRR dDQuY21ha2VQSwECFAAUAAAACAAZp4432U4X70ICAACfBwAANgAAAAAAAAAAACAAAABBLgAA d2luZGJ1cy10ZXN0L2NtYWtlL21vZHVsZXMvTWFjcm9QdXNoUmVxdWlyZWRWYXJzLmNtYWtl UEsBAhQAFAAAAAgATlpTOHJdMA3KAwAAJAsAACwAAAAAAAAAAAAgAAAA1zAAAHdpbmRidXMt dGVzdC9jbWFrZS9tb2R1bGVzL1dpbjMyTWFjcm9zLmNtYWtlUEsBAhQAFAAAAAgAUbdTOIxt hzTlAQAAmgQAAB0AAAAAAAAAAAAgAAAA6zQAAHdpbmRidXMtdGVzdC9yZWdpc3RlcnRlc3Qu Y3BwUEsFBgAAAAAJAAkAxAIAAAs3AAAAAA== --------------040507090407030601090601--