Index: /trunk/libffado/src/debugmodule/debugmodule.h
===================================================================
--- /trunk/libffado/src/debugmodule/debugmodule.h (revision 1763)
+++ /trunk/libffado/src/debugmodule/debugmodule.h (revision 1999)
@@ -283,6 +283,10 @@
 void hexDumpQuadlets( quadlet_t *data_start, unsigned int length );
 
+class DebugModuleManager;
+
 class DebugModule {
 public:
+    friend class DebugModuleManager;
+
     enum {
         eDL_Message      = DEBUG_LEVEL_MESSAGE,
@@ -333,4 +337,5 @@
     std::string   m_name;
     debug_level_t m_level;
+    DebugModuleManager* m_manager;
 };
 
Index: /trunk/libffado/src/debugmodule/debugmodule.cpp
===================================================================
--- /trunk/libffado/src/debugmodule/debugmodule.cpp (revision 1763)
+++ /trunk/libffado/src/debugmodule/debugmodule.cpp (revision 1999)
@@ -84,5 +84,6 @@
 //              << endl;
 //     }
-    if ( !DebugModuleManager::instance()->unregisterModule( *this ) ) {
+
+    if (m_manager && !m_manager->unregisterModule( *this ) ) {
         cerr << "Could not unregister DebugModule at DebugModuleManager"
              << endl;
@@ -263,12 +264,9 @@
 DebugModuleManager::~DebugModuleManager()
 {
-    // cleanin up leftover modules
-    for ( DebugModuleVectorIterator it = m_debugModules.begin();
-          it != m_debugModules.end();
-          ++it )
+    // cleaning up leftover modules
+    while (!m_debugModules.empty())
     {
-        fprintf(stderr,"Cleaning up leftover debug module: %s\n",(*it)->getName().c_str());
-        m_debugModules.erase( it );
-        delete *it;
+        DebugModule *mod = m_debugModules.back();
+        unregisterModule(*mod);
     }
 
@@ -455,4 +453,6 @@
     } else {
         m_debugModules.push_back( &debugModule );
+        if (debugModule.m_manager == NULL)
+                debugModule.m_manager = this;
     }
     return true;
@@ -469,4 +469,6 @@
         if ( *it == &debugModule ) {
             m_debugModules.erase( it );
+            if (debugModule.m_manager == this)
+                debugModule.m_manager = NULL;
             return true;
         }