Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-58377

[REG 5.5.1->5.6.2] Dbus signals are not delivered propely after update to Qt 5.6.2



    • Type: Bug
    • Status: Closed
    • Priority: Not Evaluated
    • Resolution: Invalid
    • Affects Version/s: 5.6.2
    • Fix Version/s: None
    • Component/s: D-Bus
    • Labels:
    • Environment:
      * Linux maxubuntu 4.4.0-59-generic #80~14.04.1-Ubuntu SMP Fri Jan 6 18:02:02 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
      * Avahi 0.6.31
      * D-Bus Message Bus Daemon 1.6.18
      * gcc 64 bit


      I developed a service discovery (bonjour like) class, as a wrapper around Linux's "avahi" service. The communictaion between my wrapper class and "avahi" service is implemented via "DBus" Interface and "QtDbus" classes.

      Avahi proxy classes were generated from introspected service description xml document via qdbusxml2cpp tool.

      Everything was working fine with Qt 5.5.1, till update to Qt 5.6.2 version.

      Something seems to be broken in QDBusConnectionPrivate class.
      The delayed delivery of dbus signals up to QDBusAbstractInterface subclassed instance, doesn't work properly anymore.

      I attached a small test project (qavahidbustest.pro) wich demonstrates the described error in action.

      To be able to reproduce the error you shold have at least one "uped" Network Interface and also have some bonjour traffic (at least one, via bonjour, published service) running in your LAN.

      The idea of test project is simple - just browse the LAN for all visible (published) service instances and print them to debugout:

      Step 1. retrieve all visible "service types" (e.g. "_ssh._tcp", "_http._tcp" etc.)
      Step 2. retrive all visible "service instances" (devices) for each "service type"

      This example doesn't work properly with Qt5.6.2. Not all , but only a few or absolutely none, service instances are reported/signaled to client.

      To produce a smaller log file, i reduced the second step to only "HTTP" devices in may test project ( if(type.compare("_http._tcp") == 0) line in main.cpp). Feel free to remove/modify this filter.

      For verbose output you can/should set QDBUS_DEBUG=1 in your "run enviromnet" settings. (i did so to produce both attached *.log files)


        No reviews matched the request. Check your Options in the drop-down menu of this sections header.



            thiago Thiago Macieira
            maxwalter79 Maximilian Walter
            0 Vote for this issue
            2 Start watching this issue



                Gerrit Reviews

                There are no open Gerrit changes