=== modified file 'libtelephonyservice/ringtone.cpp'
--- libtelephonyservice/ringtone.cpp	2016-03-21 19:05:02 +0000
+++ libtelephonyservice/ringtone.cpp	2016-08-23 14:43:38 +0000
@@ -72,6 +72,16 @@
         return;
     }
 
+    // Re-create if in error state. A typical case is when media-hub-server has
+    // crashed and we need to start from a clean slate.
+    if (mMessageAudioPlayer && mMessageAudioPlayer->error()) {
+        qDebug() << "mMessageAudioPlayer in error state ("
+                 << mMessageAudioPlayer->error() << "), recreating";
+
+        mMessageAudioPlayer->deleteLater();
+        mMessageAudioPlayer = NULL;
+    }
+
     if (!mMessageAudioPlayer) {
         mMessageAudioPlayer = new QMediaPlayer(this);
         mMessageAudioPlayer->setAudioRole(QAudio::NotificationRole);

