Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 33688)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 33689)
@@ -23,4 +23,5 @@
 #include <QMutex>
 #include <QWaitCondition>
+#include <QTimer>
 
 /* Local includes */
@@ -79,4 +80,5 @@
         , m_data(data)
         , m_fConditionDone(false)
+        , m_fAllowToDestroySerializer(false)
         , m_iPageIdWeAreWaitingFor(-1)
         , m_iIdOfHighPriorityPage(-1)
@@ -85,5 +87,5 @@
         connect(this, SIGNAL(sigNotifyAboutPageProcessed(int)), this, SLOT(sltHandleProcessedPage(int)), Qt::QueuedConnection);
         connect(this, SIGNAL(sigNotifyAboutPagesProcessed()), this, SLOT(sltHandleProcessedPages()), Qt::QueuedConnection);
-        connect(this, SIGNAL(finished()), this, SLOT(deleteLater()), Qt::QueuedConnection);
+        connect(this, SIGNAL(finished()), this, SLOT(sltDestroySerializer()), Qt::QueuedConnection);
 
         /* Set instance: */
@@ -194,4 +196,15 @@
         if (!m_fConditionDone)
             m_fConditionDone = true;
+    }
+
+    /* Slot to destroy serializer: */
+    void sltDestroySerializer()
+    {
+        /* If not yet all events were processed,
+         * we should postpone destruction for now: */
+        if (!m_fAllowToDestroySerializer)
+            QTimer::singleShot(0, this, SLOT(sltDestroySerializer()));
+        else
+            deleteLater();
     }
 
@@ -214,4 +227,5 @@
             m_mutex.unlock();
         }
+        m_fAllowToDestroySerializer = true;
     }
 
@@ -261,4 +275,5 @@
     UISettingsPageMap m_pages;
     bool m_fConditionDone;
+    bool m_fAllowToDestroySerializer;
     int m_iPageIdWeAreWaitingFor;
     int m_iIdOfHighPriorityPage;
