All sound stops playing after receiving SMS messages

Bug #1457129 reported by Bill Filler
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Canonical System Image
Fix Released
Critical
Canonical Phone Foundations
media-hub (Ubuntu)
Fix Released
Critical
Jim Hodapp
qtubuntu-media (Ubuntu)
Fix Released
Undecided
Jim Hodapp
unity8 (Ubuntu)
Invalid
Undecided
Michael Zanetti

Bug Description

Testing on Arale, build 6, vivid proposed

Steps to reproduce (not that easy)
1) goto System Settings->Sounds and set Message Received Sound to Xylo and check on "Vibrate with message sound" and "Vibrate in Silent Mode"
1A) Lock the phone
2) Send phone a bunch of text messages (like 4 in a row quickly)
3) verify that sound is played, vibration is heard, and notification is displayed
4) now open messaging app to the thread that received the message
5) lock the phone
6) Repeat steps 2 and 3, eventually the sounds stop playing and the notifications don't get displayed anymore, but the screen does light up.

At this point media hub is hung and you can't plays sounds from anywhere, even music player

(gdb) t a a bt

Thread 15 (Thread 0xb2f3a3a0 (LWP 2186)):
#0 0xb424f6b4 in ?? ()
#1 0xb4263c8c in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 14 (Thread 0xb25ff3a0 (LWP 2187)):
#0 0xb424f6b4 in ?? ()
#1 0xb4263c8c in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 13 (Thread 0xb1bff3a0 (LWP 2189)):
#0 0xb6320132 in epoll_wait () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0x00149850 in boost::asio::detail::epoll_reactor::run(bool, boost::asio::detail::op_queue<boost::asio::detail::task_io_service_operation>&) ()
#2 0x0014ab1a in boost::asio::detail::task_io_service::run(boost::system::error_code&) ()
#3 0x00148c8e in _start ()

Thread 12 (Thread 0xad3fe3a0 (LWP 2191)):
#0 0xb63194e0 in poll () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0x00000000 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 11 (Thread 0xacbfe3a0 (LWP 2192)):
#0 0xb63194e0 in poll () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0x00000000 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 10 (Thread 0xabcff3a0 (LWP 2202)):
#0 0xb6387d44 in __libc_do_syscall () from /lib/arm-linux-gnueabihf/libpthread.so.0
#1 0xb6385980 in __lll_lock_wait () from /lib/arm-linux-gnueabihf/libpthread.so.0
#2 0xb638119e in pthread_mutex_lock () from /lib/arm-linux-gnueabihf/libpthread.so.0
#3 0x001a8bc8 in ?? ()
#4 0x001b21d6 in core::ubuntu::media::PlayerImplementation<core::ubuntu::media::PlayerSkeleton>::Private::request_power_state() ()
#5 0x001b5384 in core::ubuntu::media::PlayerImplementation<core::ubuntu::media::PlayerSkeleton>::Private::make_state_change_handler()::{lambda(core::ubuntu::media::Engine::State const&)#1}::operator()(core::ubuntu::media::Engine::State const&) const ()
---Type <return> to continue, or q <return> to quit---
#6 0x001b0c9a in std::_Function_handler<void (core::ubuntu::media::Engine::State), std::function<void (core::ubuntu::media::Engine::State const&)> >::_M_invoke(std::_Any_data const&, core::ubuntu::media::Engine::State) ()
#7 0x001cf730 in core::Signal<core::ubuntu::media::Engine::State>::operator()(core::ubuntu::media::Engine::State) ()
#8 0x001cc2c2 in gstreamer::Engine::play() ()
#9 0x001b2018 in core::ubuntu::media::PlayerImplementation<core::ubuntu::media::PlayerSkeleton>::play() ()
#10 0x001d87b8 in core::ubuntu::media::PlayerSkeleton::Private::handle_play(std::shared_ptr<core::dbus::Message> const&) ()
#11 0xb6f161c0 in ?? () from /usr/lib/arm-linux-gnueabihf/libdbus-cpp.so.4
#12 0xb6245aa2 in ?? () from /lib/arm-linux-gnueabihf/libdbus-1.so.3
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 9 (Thread 0xa31ff3a0 (LWP 4024)):
#0 0xb6387d44 in __libc_do_syscall () from /lib/arm-linux-gnueabihf/libpthread.so.0
#1 0xb638595c in __lll_lock_wait () from /lib/arm-linux-gnueabihf/libpthread.so.0
#2 0xb638119e in pthread_mutex_lock () from /lib/arm-linux-gnueabihf/libpthread.so.0
#3 0x001a887e in ?? ()
#4 0x001ac772 in std::_Function_handler<void (std::shared_ptr<core::dbus::Message> const&), void core::dbus::Object::invoke_method_asynchronously_with_callback<com::canonical::powerd::Interface::clearSysState, void, std::string>(std::function<void (core::dbus::Result<void> const&)>, std::string const&)::{lambda(std::shared_ptr<core::dbus::Message> const&)#1}>::_M_invoke(std::_Any_data const&, std::shared_ptr<core::dbus::Message> const&) ()
#5 0xb6f17da4 in ?? () from /usr/lib/arm-linux-gnueabihf/libdbus-cpp.so.4
#6 0x001acc5a in void core::dbus::Object::invoke_method_asynchronously_with_callback<com::canonical::powerd::Interface::clearSysState, void, std::string>(std::function<void (core::dbus::Result<void> const&)>, std::string const&) ()
#7 0x001a8ad4 in ?? ()
#8 0x001b230e in core::ubuntu::media::PlayerImplementation<core::ubuntu::media::PlayerSkeleton>::Private::clear_wakelock(core::ubuntu::media::PlayerImplementation<core::ubuntu::media::PlayerSkeleton>::Private::wakelock_clear_t const&) ()
#9 0x001b8052 in std::_Function_handler<void (), core::ubuntu::media::PlayerImplementation<core::ubuntu::media::PlayerSkeleton>::Private::make_clear_wakelock_functor()::{lambda()#1}>::_M_invoke(std::_Any_data const&) ()
#10 0x001b24da in std::thread::_Impl<std::_Bind_simple<core::ubuntu::media::timeout::timeout<std::function<void ()>>(int, bool, std::function<void ()>&&)::{lambda()#1} ()> >::_M_run() ()
#11 0xb643f2a0 in ?? () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#12 0xb637f490 in start_thread () from /lib/arm-linux-gnueabihf/libpthread.so.0
#13 0xb631fc4c in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

---Type <return> to continue, or q <return> to quit---
Thread 8 (Thread 0xa95ff3a0 (LWP 4041)):
#0 0xb63194e0 in poll () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0x00000000 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 7 (Thread 0xa39ff3a0 (LWP 4042)):
#0 0xb631d620 in syscall () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0xb6d89110 in g_cond_wait () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
#2 0xb6eb1674 in ?? () from /usr/lib/arm-linux-gnueabihf/libgstreamer-1.0.so.0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 6 (Thread 0xab3253a0 (LWP 4045)):
#0 0xb631d620 in syscall () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0xb6d89110 in g_cond_wait () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
#2 0xb6eb1674 in ?? () from /usr/lib/arm-linux-gnueabihf/libgstreamer-1.0.so.0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 5 (Thread 0xa4dfe3a0 (LWP 4046)):
#0 0xb6387d44 in __libc_do_syscall () from /lib/arm-linux-gnueabihf/libpthread.so.0
#1 0xb638595c in __lll_lock_wait () from /lib/arm-linux-gnueabihf/libpthread.so.0
#2 0xb638119e in pthread_mutex_lock () from /lib/arm-linux-gnueabihf/libpthread.so.0
#3 0x00153b28 in std::mutex::lock() ()
#4 0x001cf692 in core::Signal<core::ubuntu::media::Engine::State>::operator()(core::ubuntu::media::Engine::State) ()
#5 0x001cf884 in gstreamer::Engine::Private::on_about_to_finish() ()
#6 0x001598bc in core::Signal<void>::operator()() ()
#7 0xb6e03806 in ?? () from /usr/lib/arm-linux-gnueabihf/libgobject-2.0.so.0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 4 (Thread 0xa43ff3a0 (LWP 4047)):
#0 0xb631d620 in syscall () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0xb6d89110 in g_cond_wait () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0
#2 0xab3784e2 in ?? () from /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/libgstcoreelements.so
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 3 (Thread 0xa9fff3a0 (LWP 4203)):
#0 0xb424f6b4 in ?? ()
#1 0xb4263c8c in ?? ()
---Type <return> to continue, or q <return> to quit---
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 2 (Thread 0xa29ff3a0 (LWP 4204)):
#0 0xb424f6b4 in ?? ()
#1 0xb4263c8c in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 1 (Thread 0xb42dd000 (LWP 2101)):
#0 0xb63194e0 in poll () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0x00000000 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)

Related branches

Bill Filler (bfiller)
Changed in canonical-devices-system-image:
importance: Undecided → Critical
Changed in media-hub (Ubuntu):
importance: Undecided → Critical
assignee: nobody → Jim Hodapp (jhodapp)
Jim Hodapp (jhodapp)
Changed in canonical-devices-system-image:
assignee: nobody → Canonical Phone Foundations (canonical-phonedations-team)
Revision history for this message
Bill Filler (bfiller) wrote :
Download full text (14.0 KiB)

Here is log from telephony-service-indicator which attempts to call media-hub to play the incoming notification sounds

Initializing AalServicePlugin
virtual QMediaService* AalServicePlugin::create(const QString&) "org.qt-project.qt.mediaplayer"
Creating a new static Service instance
virtual int AalMediaPlayerControl::volume() const

QObject::installEventFilter(): Cannot filter events for objects in a different thread.
void AalMediaPlayerService::createMetaDataReaderControl()
virtual QMediaPlayer::State AalMediaPlayerControl::state() const

virtual QMediaPlayer::MediaStatus AalMediaPlayerControl::mediaStatus() const

virtual QMediaPlayer::MediaStatus AalMediaPlayerControl::mediaStatus() const

virtual void AalMediaPlayerControl::setAudioRole(QMediaPlayer::AudioRole)
void AalMediaPlayerService::setAudioRole(QMediaPlayer::AudioRole)
virtual void AalMediaPlayerControl::stop()

PlaybackStatusChanged signal arrived via the bus.
virtual void AalMediaPlayerControl::stop()

virtual void AalMediaPlayerControl::setMedia(const QMediaContent&, QIODevice*)

virtual QMediaPlayer::MediaStatus AalMediaPlayerControl::mediaStatus() const

Local file URI: "file:///usr/share/sounds/ubuntu/notifications/Xylo.ogg"
Setting media to: QUrl( "file:///usr/share/sounds/ubuntu/notifications/Xylo.ogg" )
void AalMetaDataReaderControl::onMediaChanged(const QMediaContent&)
void AalMetaDataReaderControl::updateMetaData()
Doing a mediascanner lookup of file: "///usr/share/sounds/ubuntu/notifications/Xylo.ogg"
Caught runtime exception from mediascanner: Could not find media ///usr/share/sounds/ubuntu/notifications/Xylo.ogg
virtual void AalMediaPlayerControl::play()

virtual void core::ubuntu::media::ServiceStub::pause_other_sessions(core::ubuntu::media::Player::PlayerKey)
Actually calling m_hubPlayerSession->play()
VideoDimensionChanged signal arrived via the bus.
PlaybackStatusChanged signal arrived via the bus.
AboutToFinish signal arrived via the bus.
AboutToFinish signal arrived via the bus.
EndOfStream signal arrived via the bus.
void AalMediaPlayerControl::playbackComplete()

virtual void AalMediaPlayerControl::stop()

PlaybackStatusChanged signal arrived via the bus.
void AalVideoRendererControl::playbackComplete()
virtual void AalMediaPlayerControl::stop()

virtual void AalMediaPlayerControl::stop()

virtual void AalMediaPlayerControl::setMedia(const QMediaContent&, QIODevice*)

virtual QMediaPlayer::MediaStatus AalMediaPlayerControl::mediaStatus() const

Local file URI: "file:///usr/share/sounds/ubuntu/notifications/Xylo.ogg"
Setting media to: QUrl( "file:///usr/share/sounds/ubuntu/notifications/Xylo.ogg" )
virtual void AalMediaPlayerControl::stop()

void AalMetaDataReaderControl::onMediaChanged(const QMediaContent&)
void AalMetaDataReaderControl::updateMetaData()
Doing a mediascanner lookup of file: "///usr/share/sounds/ubuntu/notifications/Xylo.ogg"
Caught runtime exception from mediascanner: Could not find media ///usr/share/sounds/ubuntu/notifications/Xylo.ogg
virtual void AalMediaPlayerControl::play()

virtual void core::ubuntu::media::ServiceStub::pause_other_sessions(core::ubuntu::media::Player::PlayerKey)
Actually calling m_hubPlaye...

Changed in canonical-devices-system-image:
milestone: none → ww22-2015
Jim Hodapp (jhodapp)
Changed in media-hub (Ubuntu):
status: New → Confirmed
Revision history for this message
Pat McGowan (pat-mcgowan) wrote :

FWIW I get this on mako running rtm

Changed in canonical-devices-system-image:
status: New → Confirmed
Jim Hodapp (jhodapp)
Changed in media-hub (Ubuntu):
status: Confirmed → In Progress
Revision history for this message
Jim Hodapp (jhodapp) wrote :

When this happens for me, Unity8 first crashes and then I can get into the state of this bug. Very rare on latest image, but less rare on image 6.

Revision history for this message
Albert Astals Cid (aacid) wrote :

I don't have an arale to test but the crash on receiving SMS may be the same as https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1456711 ?

According to the backtrace of that bug something is wrong in media-hub that is tearing down unity8.

Revision history for this message
Bill Filler (bfiller) wrote :

Here is the relevant part of unity stack trace:
Thread 1 (Thread 0xb6fb7000 (LWP 1844)):
#0 0xb61779a6 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
#1 0xb618562e in raise () from /lib/arm-linux-gnueabihf/libc.so.6
#2 0xb6186332 in abort () from /lib/arm-linux-gnueabihf/libc.so.6
#3 0xb62c3120 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#4 0xb62c1950 in ?? () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#5 0xb62c19a6 in std::terminate() () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#6 0xb62c1bc6 in __cxa_throw () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#7 0xa6e4be0c in core::ubuntu::media::PlayerStub::seek_to(std::chrono::duration<long long, std::ratio<1ll, 1000000ll> > const&) () from /usr/lib/arm-linux-gnueabihf/libmedia-hub-client.so.3
#8 0xa6edeb04 in AalMediaPlayerService::setPosition(long long) ()
---Type <return> to continue, or q <return> to quit---
   from /usr/lib/arm-linux-gnueabihf/qt5/plugins/mediaservice/libaalmediaplayer.so
#9 0xa6edb01c in AalMediaPlayerControl::playbackComplete() ()
   from /usr/lib/arm-linux-gnueabihf/qt5/plugins/mediaservice/libaalmediaplayer.so
#10 0xa7b31b4c in ?? () from /usr/lib/arm-linux-gnueabihf/qt5/qml/QtMultimedia/libdeclarative_multimedia.so
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Bill Filler (bfiller)
Changed in unity8 (Ubuntu):
assignee: nobody → Michael Zanetti (mzanetti)
Revision history for this message
Michael Zanetti (mzanetti) wrote :

So this indicates the QtMultimedia backend (libaalmediaplayer.so) is throwing an exception which is originating in libmedia-hub-client.so.3.

QML can't deal with exceptions (in C++ terms) and will inevitably crash. As exceptions are not used in Qt by design, no QML module should ever throw them.

Seems like there are two things to do here:

1) add a global try/catch somewhere to libaalmediaplayer.so to never throw exceptions up towards unity as there is no way for us to catch them.
2) fix this particular issue in libmedia-hub-client.so.3

Changed in unity8 (Ubuntu):
status: New → Invalid
Jim Hodapp (jhodapp)
Changed in qtubuntu-media (Ubuntu):
status: New → In Progress
Changed in canonical-devices-system-image:
status: Confirmed → In Progress
Changed in qtubuntu-media (Ubuntu):
assignee: nobody → Jim Hodapp (jhodapp)
Jim Hodapp (jhodapp)
Changed in media-hub (Ubuntu):
status: In Progress → Fix Committed
Changed in qtubuntu-media (Ubuntu):
status: In Progress → Fix Committed
Jim Hodapp (jhodapp)
Changed in canonical-devices-system-image:
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package qtubuntu-media - 0.7.1+15.10.20150527.2-0ubuntu1

---------------
qtubuntu-media (0.7.1+15.10.20150527.2-0ubuntu1) wily; urgency=medium

  [ CI Train Bot ]
  * New rebuild forced.

  [ Jim Hodapp ]
  * Wrap seek_to() in a try/catch block so that an exception from
    libmedia-hub-client is not pushed up to the QML level. Do the same
    for get/set audio role. (LP: #1457129)

 -- CI Train Bot <email address hidden> Wed, 27 May 2015 18:38:32 +0000

Changed in qtubuntu-media (Ubuntu):
status: Fix Committed → Fix Released
Jim Hodapp (jhodapp)
Changed in media-hub (Ubuntu):
status: Fix Committed → Fix Released
Changed in canonical-devices-system-image:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.