AalMediaPlaylistProvider::mediaCount locked UI over a dbus call

Bug #1491732 reported by Albert Astals Cid on 2015-09-03
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Canonical System Image
Undecided
Unassigned
qtubuntu-media (Ubuntu)
Undecided
Unassigned

Bug Description

I was testing with silo 4 playing songs after other songs.

At some stage the UI froze, backtrace says

#0 0xb614b4e2 in poll () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0xb5ae3ea0 in socket_do_iteration (transport=0x2be4600, flags=6, timeout_milliseconds=<optimized out>) at ../../dbus/dbus-transport-socket.c:1149
#2 0xb5ae3422 in _dbus_transport_do_iteration (transport=0x2be4600, flags=6, timeout_milliseconds=29998) at ../../dbus/dbus-transport.c:1001
#3 0xb5ad29c8 in _dbus_connection_do_iteration_unlocked (connection=0x2e33390, pending=<optimized out>, flags=6, timeout_milliseconds=29998) at ../../dbus/dbus-connection.c:1227
#4 0xb5ad3154 in _dbus_connection_block_pending_call (pending=pending@entry=0x3426518) at ../../dbus/dbus-connection.c:2527
#5 0xb5adf10e in dbus_pending_call_block (pending=pending@entry=0x3426518) at ../../dbus/dbus-pending-call.c:741
#6 0xb5ad34d4 in dbus_connection_send_with_reply_and_block (connection=0x2e33390, message=0x97297b80, timeout_milliseconds=30000, error=0x38484b8) at ../../dbus/dbus-connection.c:3575
#7 0xb3aca8cc in core::dbus::Bus::send_with_reply_and_block_for_at_most(std::shared_ptr<core::dbus::Message> const&, std::chrono::duration<long long, std::ratio<1ll, 1000ll> > const&) () from /usr/lib/arm-linux-gnueabihf/libdbus-cpp.so.4
#8 0x99d7093c in core::dbus::Object::invoke_method_synchronously<core::dbus::interfaces::Properties::Get, core::dbus::types::TypedVariant<std::vector<std::string, std::allocator<std::string> > >, std::string, std::string> (this=<optimized out>)
    at /usr/include/core/dbus/impl/object.h:82
#9 0x99d70aee in core::dbus::Property<mpris::TrackList::Properties::Tracks>::get (this=0x2b11fd0) at /usr/include/core/dbus/impl/property.h:31
#10 0x99dcc6a6 in operator-> (this=0x2b11fd0) at /usr/include/core/property.h:110
#11 AalMediaPlaylistProvider::mediaCount (this=<optimized out>) at aalmediaplaylistprovider.cpp:58
#12 0x99dcd8ce in AalMediaPlaylistProvider::media (this=0x2cc08f8, index=7) at aalmediaplaylistprovider.cpp:68
#13 0xae6eef50 in QMediaPlaylist::currentMedia() const () from /usr/lib/arm-linux-gnueabihf/libQt5Multimedia.so.5
#14 0xae7439d6 in QDeclarativePlaylist::currentSource (this=this@entry=0x32d2130) at qdeclarativeplaylist.cpp:259
#15 0xae7449ce in QDeclarativePlaylist::qt_metacall (this=0x32d2130, _c=<optimized out>, _id=1, _a=0xbeb0423c) at .moc/moc_qdeclarativeplaylist_p.cpp:577
#16 0xb6ac6f28 in QV4::QObjectWrapper::getProperty(QObject*, QV4::ExecutionContext*, QQmlPropertyData*, bool) () from /usr/lib/arm-linux-gnueabihf/libQt5Qml.so.5
#17 0xb6ac716c in QV4::QObjectWrapper::getQmlProperty(QV4::ExecutionContext*, QQmlContextData*, QV4::String*, QV4::QObjectWrapper::RevisionMode, bool*, bool) () from /usr/lib/arm-linux-gnueabihf/libQt5Qml.so.5
#18 0xb6ac72ca in QV4::QObjectWrapper::get(QV4::Managed*, QV4::String*, bool*) () from /usr/lib/arm-linux-gnueabihf/libQt5Qml.so.5
#19 0xb6ad0b3e in QV4::Runtime::getProperty(QV4::ExecutionContext*, QV4::ValueRef, QV4::String*) () from /usr/lib/arm-linux-gnueabihf/libQt5Qml.so.5

Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in media-hub (Ubuntu):
status: New → Confirmed
Changed in qtmultimedia-opensource-src (Ubuntu):
status: New → Confirmed
Changed in qtubuntu-media (Ubuntu):
status: New → Confirmed
Jim Hodapp (jhodapp) on 2015-09-03
Changed in qtmultimedia-opensource-src (Ubuntu):
status: Confirmed → Invalid
Jim Hodapp (jhodapp) on 2015-09-10
Changed in canonical-devices-system-image:
status: New → Confirmed
Jim Hodapp (jhodapp) wrote :

Give silo 47 a try. I have what should be a fix but I wasn't ever able to reproduce the issue directly. I refactored mediaCount() to no longer make a dbus call to retrieve the value so that's why I'm confident this should fix the issue. Also, make sure that call playlist.clear() when you start playing a new album in the new music scope. The background playlist does not have the right context to know when to do this.

Changed in qtubuntu-media (Ubuntu):
status: Confirmed → Fix Committed
Albert Astals Cid (aacid) wrote :

I can not reproduce the lock anymore but i have other issues, will send you an email

Jim Hodapp (jhodapp) on 2016-01-06
Changed in canonical-devices-system-image:
status: Confirmed → Fix Released
Changed in qtubuntu-media (Ubuntu):
status: Fix Committed → Fix Released
no longer affects: media-hub (Ubuntu)
no longer affects: qtmultimedia-opensource-src (Ubuntu)
Changed in canonical-devices-system-image:
status: Fix Released → Fix Committed
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers