diff --git a/src/syncevo/SyncContext.cpp b/src/syncevo/SyncContext.cpp
index f8c88d3..c3c022f 100644
--- a/src/syncevo/SyncContext.cpp
+++ b/src/syncevo/SyncContext.cpp
@@ -1514,7 +1514,12 @@ SyncMLStatus SyncContext::sync(SyncReport *report)
         SwapEngine swapengine(*this);
         string xml, configname;
         getConfigXML(xml, configname);
-        m_engine.InitEngineXML(xml.c_str());
+        try {
+            m_engine.InitEngineXML(xml.c_str());
+        } catch (const BadSynthesisResult &ex) {
+            SE_LOG_INFO(NULL, NULL, "Internal error in XML configuration:\n%s", xml.c_str());
+            throw;
+        }
 
         try {
             // dump some summary information at the beginning of the log
@@ -1613,7 +1618,12 @@ SyncMLStatus SyncContext::doSync()
     // re-init engine with all sources configured
     string xml, configname;
     getConfigXML(xml, configname);
-    m_engine.InitEngineXML(xml.c_str());
+    try {
+        m_engine.InitEngineXML(xml.c_str());
+    } catch (const BadSynthesisResult &ex) {
+        SE_LOG_INFO(NULL, NULL, "Internal error in XML configuration:\n%s", xml.c_str());
+        throw;
+    }
     SE_LOG_DEV(NULL, NULL, "Full XML configuration:\n%s", xml.c_str());
 
     // check the settings status (MUST BE DONE TO MAKE SETTINGS READY)
