Bug 262940 - Solid must check for availability of udisks
Summary: Solid must check for availability of udisks
Status: RESOLVED WORKSFORME
Alias: None
Product: solid
Classification: Frameworks and Libraries
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Lukáš Tinkl
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-01-12 13:01 UTC by Artem Anisimov
Modified: 2011-05-23 14:02 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Artem Anisimov 2011-01-12 13:01:37 UTC
Version:           4.6 (using KDE 4.5.95) 
OS:                Linux

Udisks backend is unconditionally compiled on every GNU/Linux system. It's wrong for there are systems that do not use udisks.

On such systems solid crashes when making DBus calls to udisks.

Either a compile-time check for presence of udisks must be added to solid, or udisks backend must check for availability of udisks at startup.

Reproducible: Always
Comment 1 Lukáš Tinkl 2011-01-12 13:14:16 UTC
It's not compiled against udisks, therefore no compile time check can be introduced, the dependency is runtime. In case of missing udisks, Solid should fall back to HAL; either of them must be installed.
Comment 2 Artem Anisimov 2011-01-12 13:34:27 UTC
> In case of missing udisks, Solid should fall back to HAL

  Probably it happens, but I have no HAL either. See problem report #217189.
Comment 3 Lukáš Tinkl 2011-01-12 14:41:56 UTC
With neither HAL or udisks installed, you have a non-functional solid lib.

Please post the backtrace of such crash in case of missing udisks service.
Comment 4 Artem Anisimov 2011-01-22 10:07:04 UTC
#6  0xb5ed5bfc in QDBusMessage::arguments() const () from /usr/lib/qt/lib/libQtDBus.so.4
#7  0xb5f07294 in QDBusPendingReplyData::argumentAt(int) const () from /usr/lib/qt/lib/libQtDBus.so.4
#8  0xb3c70b6a in QDBusPendingReply<QMap<QString, QVariant>, void, void, void, void, void, void, void>::argumentAt<0> (this=0xbfb73188) at /usr/lib/qt/include/QtDBus/qdbuspendingreply.h:176
#9  0xb3c70ba9 in QDBusPendingReply<QMap<QString, QVariant>, void, void, void, void, void, void, void>::value (this=0xbfb73188) at /usr/lib/qt/include/QtDBus/qdbuspendingreply.h:181
#10 0xb3c6de7f in Solid::Backends::UDisks::UDisksDevice::allProperties (this=0xbfb733d8) at /home/artem/testing/slack-update/kde/tmp/kdelibs-4.5.95/solid/solid/backends/udisks/udisksdevice.cpp:703
#11 0xb3c6df24 in Solid::Backends::UDisks::UDisksDevice::checkCache (this=0xbfb733d8, key=...) at /home/artem/testing/slack-update/kde/tmp/kdelibs-4.5.95/solid/solid/backends/udisks/udisksdevice.cpp:671
#12 0xb3c6e077 in Solid::Backends::UDisks::UDisksDevice::property (this=0xbfb733d8, key=...) at /home/artem/testing/slack-update/kde/tmp/kdelibs-4.5.95/solid/solid/backends/udisks/udisksdevice.cpp:687
#13 0xb3c702b1 in Solid::Backends::UDisks::UDisksDevice::queryDeviceInterface (this=0xbfb733d8, type=@0xbfb7345c) at /home/artem/testing/slack-update/kde/tmp/kdelibs-4.5.95/solid/solid/backends/udisks/udisksdevice.cpp:165
#14 0xb3c6aaca in Solid::Backends::UDisks::UDisksManager::devicesFromQuery (this=0x909e330, parentUdi=..., type=Solid::DeviceInterface::StorageAccess) at /home/artem/testing/slack-update/kde/tmp/kdelibs-4.5.95/solid/solid/backends/udisks/udisksmanager.cpp:123
#15 0xb3c16f93 in Solid::Device::listFromQuery (predicate=..., parentUdi=...) at /home/artem/testing/slack-update/kde/tmp/kdelibs-4.5.95/solid/solid/devicemanager.cpp:142
#16 0xab0fd464 in ?? () from /usr/lib/kde4/plasma_engine_hotplug.so
#17 0xb74333b0 in Plasma::DataEngineManager::loadEngine(QString const&) () from /usr/lib/libplasma.so.3
#18 0xb746c5bd in ?? () from /usr/lib/libplasma.so.3
#19 0xb73e0657 in Plasma::AbstractRunner::dataEngine(QString const&) const () from /usr/lib/libplasma.so.3
#20 0xab02ba1e in ?? () from /usr/lib/kde4/krunner_solid.so
#21 0xab02bc3e in ?? () from /usr/lib/kde4/krunner_solid.so
#22 0xb6098efa in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/qt/lib/libQtCore.so.4
#23 0xb609bea9 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const () from /usr/lib/qt/lib/libQtCore.so.4
#24 0xb609cb84 in QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) () from /usr/lib/qt/lib/libQtCore.so.4
#25 0xb74b3da7 in ?? () from /usr/lib/libplasma.so.3
#26 0xb74af0a4 in Plasma::RunnerManager::reloadConfiguration() () from /usr/lib/libplasma.so.3
#27 0xb76b0e61 in ?? () from /usr/lib/libkdeinit4_krunner.so
#28 0xb76b1732 in ?? () from /usr/lib/libkdeinit4_krunner.so
#29 0xb76b17ce in ?? () from /usr/lib/libkdeinit4_krunner.so
#30 0xb76b1ebd in kdemain () from /usr/lib/libkdeinit4_krunner.so
#31 0x0804874b in _start ()