ubuntu-sdk-bugs team mailing list archive
-
ubuntu-sdk-bugs team
-
Mailing list archive
-
Message #07876
[Bug 1776446] [NEW] QDBusInterface is able to connect to org.freedesktop.DBus, but its status is invalid
Public bug reported:
Consider the following example:
#include <QtCore>
#include <QtDBus>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QDBusInterface dbus("org.freedesktop.DBus",
"/org/freedesktop/DBus",
"org.freedesktop.DBus",
QDBusConnection::sessionBus());
if (!dbus.isValid())
{
qDebug() << "IFACE IS NOT VALID" << dbus.lastError().message();
return 1;
}
QDBusReply<QStringList> servicesReply = dbus.call("ListNames");
if (!servicesReply.isValid())
{
qDebug() << "REPLY IS NOT VALID" << servicesReply.error().message();
return 2;
}
qDebug() << servicesReply.value();
}
Compile and run. It prints
IFACE IS NOT VALID ""
The issue here is that QDBusInterface::isValid() returns false, however
it's still possible to call its methods. If I comment out the "if
(!dbus.isValid())" line, it starts to work fine:
#include <QtCore>
#include <QtDBus>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QDBusInterface dbus("org.freedesktop.DBus",
"/org/freedesktop/DBus",
"org.freedesktop.DBus",
QDBusConnection::sessionBus());
/*
if (!dbus.isValid())
{
qDebug() << "IFACE IS NOT VALID" << dbus.lastError().message();
return 1;
}
*/
// WORKS FINE!
QDBusReply<QStringList> servicesReply = dbus.call("ListNames");
if (!servicesReply.isValid())
{
qDebug() << "REPLY IS NOT VALID" << servicesReply.error().message();
return 2;
}
qDebug() << servicesReply.value();
}
In Ubuntu 16.04 it worked fine. All updates have been installed.
** Affects: qtbase-opensource-src (Ubuntu)
Importance: Undecided
Status: New
** Tags: bionic
** Attachment added: "dbus-list.tar.gz"
https://bugs.launchpad.net/bugs/1776446/+attachment/5151676/+files/dbus-list.tar.gz
** Description changed:
Consider the following example:
#include <QtCore>
#include <QtDBus>
int main(int argc, char *argv[])
{
- QCoreApplication app(argc, argv);
+ QCoreApplication app(argc, argv);
- QDBusInterface dbus("org.freedesktop.DBus",
- "/org/freedesktop/DBus",
- "org.freedesktop.DBus",
- QDBusConnection::sessionBus());
+ QDBusInterface dbus("org.freedesktop.DBus",
+ "/org/freedesktop/DBus",
+ "org.freedesktop.DBus",
+ QDBusConnection::sessionBus());
- if (!dbus.isValid())
- {
- qDebug() << "IFACE IS NOT VALID" << dbus.lastError().message();
- return 1;
- }
+ if (!dbus.isValid())
+ {
+ qDebug() << "IFACE IS NOT VALID" << dbus.lastError().message();
+ return 1;
+ }
- QDBusReply<QStringList> servicesReply = dbus.call("ListNames");
-
- if (!servicesReply.isValid())
- {
- qDebug() << "REPLY IS NOT VALID" << servicesReply.error().message();
- return 2;
- }
+ QDBusReply<QStringList> servicesReply = dbus.call("ListNames");
- qDebug() << servicesReply.value();
+ if (!servicesReply.isValid())
+ {
+ qDebug() << "REPLY IS NOT VALID" << servicesReply.error().message();
+ return 2;
+ }
+
+ qDebug() << servicesReply.value();
}
Compile and run. It prints
IFACE IS NOT VALID ""
The issue here is that QDBusInterface::isValid() returns false, however
it's still possible to call its methods. If I comment out the "if
(!dbus.isValid())" line, it starts to work fine:
#include <QtCore>
#include <QtDBus>
int main(int argc, char *argv[])
{
- QCoreApplication app(argc, argv);
+ QCoreApplication app(argc, argv);
- QDBusInterface dbus("org.freedesktop.DBus",
- "/org/freedesktop/DBus",
- "org.freedesktop.DBus",
- QDBusConnection::sessionBus());
+ QDBusInterface dbus("org.freedesktop.DBus",
+ "/org/freedesktop/DBus",
+ "org.freedesktop.DBus",
+ QDBusConnection::sessionBus());
/*
- if (!dbus.isValid())
- {
- qDebug() << "IFACE IS NOT VALID" << dbus.lastError().message();
- return 1;
- }
+ if (!dbus.isValid())
+ {
+ qDebug() << "IFACE IS NOT VALID" << dbus.lastError().message();
+ return 1;
+ }
*/
- // WORKS FINE!
- QDBusReply<QStringList> servicesReply = dbus.call("ListNames");
+ // WORKS FINE!
+ QDBusReply<QStringList> servicesReply = dbus.call("ListNames");
- if (!servicesReply.isValid())
- {
- qDebug() << "REPLY IS NOT VALID" << servicesReply.error().message();
- return 2;
- }
+ if (!servicesReply.isValid())
+ {
+ qDebug() << "REPLY IS NOT VALID" << servicesReply.error().message();
+ return 2;
+ }
- qDebug() << servicesReply.value();
+ qDebug() << servicesReply.value();
}
+
+ In Ubuntu 16.04 it worked fine. All updates have been installed.
--
You received this bug notification because you are a member of Ubuntu
SDK bug tracking, which is subscribed to qtbase-opensource-src in
Ubuntu.
https://bugs.launchpad.net/bugs/1776446
Title:
QDBusInterface is able to connect to org.freedesktop.DBus, but its
status is invalid
Status in qtbase-opensource-src package in Ubuntu:
New
Bug description:
Consider the following example:
#include <QtCore>
#include <QtDBus>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QDBusInterface dbus("org.freedesktop.DBus",
"/org/freedesktop/DBus",
"org.freedesktop.DBus",
QDBusConnection::sessionBus());
if (!dbus.isValid())
{
qDebug() << "IFACE IS NOT VALID" << dbus.lastError().message();
return 1;
}
QDBusReply<QStringList> servicesReply = dbus.call("ListNames");
if (!servicesReply.isValid())
{
qDebug() << "REPLY IS NOT VALID" << servicesReply.error().message();
return 2;
}
qDebug() << servicesReply.value();
}
Compile and run. It prints
IFACE IS NOT VALID ""
The issue here is that QDBusInterface::isValid() returns false,
however it's still possible to call its methods. If I comment out the
"if (!dbus.isValid())" line, it starts to work fine:
#include <QtCore>
#include <QtDBus>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QDBusInterface dbus("org.freedesktop.DBus",
"/org/freedesktop/DBus",
"org.freedesktop.DBus",
QDBusConnection::sessionBus());
/*
if (!dbus.isValid())
{
qDebug() << "IFACE IS NOT VALID" << dbus.lastError().message();
return 1;
}
*/
// WORKS FINE!
QDBusReply<QStringList> servicesReply = dbus.call("ListNames");
if (!servicesReply.isValid())
{
qDebug() << "REPLY IS NOT VALID" << servicesReply.error().message();
return 2;
}
qDebug() << servicesReply.value();
}
In Ubuntu 16.04 it worked fine. All updates have been installed.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/qtbase-opensource-src/+bug/1776446/+subscriptions
Follow ups