diff --git a/src/qml/qml/qqmlcomponent.cpp b/src/qml/qml/qqmlcomponent.cpp
index a36b742..990056e 100644
--- a/src/qml/qml/qqmlcomponent.cpp
+++ b/src/qml/qml/qqmlcomponent.cpp
@@ -394,6 +394,7 @@ QQmlComponent::~QQmlComponent()
 
     if (d->typeData) {
         d->typeData->unregisterCallback(d);
+        qDebug() << QThread::currentThread() << Q_FUNC_INFO << "releasing typeData" << d->typeData->url();
         d->typeData->release();
     }
     if (d->cc)
diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp
index 0bf8043..45f1a8d 100644
--- a/src/qml/qml/qqmltypeloader.cpp
+++ b/src/qml/qml/qqmltypeloader.cpp
@@ -249,6 +249,7 @@ QQmlDataBlob::~QQmlDataBlob()
 {
     Q_ASSERT(m_waitingOnMe.isEmpty());
 
+    qDebug() << QThread::currentThread() << Q_FUNC_INFO << "calling cancelAllWaitingFor on" << url();
     cancelAllWaitingFor();
 }
 
@@ -418,6 +419,8 @@ void QQmlDataBlob::setError(const QList<QQmlError> &errors)
         for (int ii = 0; ii < errors.count(); ++ii)
             qWarning().nospace() << "    " << qPrintable(errors.at(ii).toString());
     }
+    qDebug() << QThread::currentThread() << Q_FUNC_INFO << "calling cancelAllWaitingFor() for " << url() << "because of errors from thread:";
+    qDebug() << m_errors;
     cancelAllWaitingFor();
 
     if (!m_inCallback)
@@ -446,6 +449,8 @@ void QQmlDataBlob::addDependency(QQmlDataBlob *blob)
 
     m_data.setStatus(WaitingForDependencies);
 
+    qDebug() << QThread::currentThread() << Q_FUNC_INFO << "appending blob" << blob->url()
+             << "to m_waitingFor" << "of blob" << url();
     m_waitingFor.append(blob);
     blob->m_waitingOnMe.append(this);
 }
@@ -621,11 +626,16 @@ void QQmlDataBlob::tryDone()
 
 void QQmlDataBlob::cancelAllWaitingFor()
 {
+    qDebug() << QThread::currentThread() << Q_FUNC_INFO << url() << QThread::currentThreadId();
+
     while (m_waitingFor.count()) {
+        qDebug() << QThread::currentThread() << Q_FUNC_INFO << "taking" << m_waitingFor.last()->finalUrl()
+                 << "from m_waitingFor" << "of blob" << url();
         QQmlDataBlob *blob = m_waitingFor.takeLast();
 
         Q_ASSERT(blob->m_waitingOnMe.contains(this));
 
+        qDebug() << QThread::currentThread() << Q_FUNC_INFO << url() << "removing blob from waitingOnMe" << blob->url();
         blob->m_waitingOnMe.removeOne(this);
 
         blob->release();
@@ -634,7 +644,11 @@ void QQmlDataBlob::cancelAllWaitingFor()
 
 void QQmlDataBlob::notifyAllWaitingOnMe()
 {
+    qDebug() << QThread::currentThread() << Q_FUNC_INFO << url() << QThread::currentThreadId();
+
     while (m_waitingOnMe.count()) {
+        qDebug() << QThread::currentThread() << Q_FUNC_INFO << "taking" << m_waitingOnMe.last()->finalUrl()
+                 << "from m_waitingOnMe" << "of blob" << url();
         QQmlDataBlob *blob = m_waitingOnMe.takeLast();
 
         Q_ASSERT(blob->m_waitingFor.contains(this));
@@ -650,6 +664,8 @@ void QQmlDataBlob::notifyComplete(QQmlDataBlob *blob)
 
     m_inCallback = true;
 
+    qDebug() << QThread::currentThread() << Q_FUNC_INFO << "removing" << blob->url()
+             << "from m_waitingFor" << "of blob" << url();
     m_waitingFor.removeOne(blob);
 
     if (blob->status() == Error) {
@@ -1246,6 +1262,8 @@ QQmlTypeLoader::Blob::~Blob()
 
 bool QQmlTypeLoader::Blob::fetchQmldir(const QUrl &url, const QV4::CompiledData::Import *import, int priority, QList<QQmlError> *errors)
 {
+    qDebug() << QThread::currentThread() << Q_FUNC_INFO << this->finalUrl();
+
     QQmlQmldirData *data = typeLoader()->getQmldir(url);
 
     data->setImport(import);
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
index 0522e4c..02cba1e 100644
--- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
+++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
@@ -1002,9 +1002,12 @@ ReturnedValue QtObject::method_createQmlObject(CallContext *ctx)
     QV4::Scoped<QV4::QObjectWrapper> qobjectWrapper(scope, ctx->args()[1]);
     if (!!qobjectWrapper)
         parentArg = qobjectWrapper->object();
-    if (!parentArg)
+    if (!parentArg) {
+        qDebug() << QThread::currentThread() << Q_FUNC_INFO << "about to throw and return because of missing parent object";
         V4THROW_ERROR("Qt.createQmlObject(): Missing parent object");
+    }
 
+    qDebug() << QThread::currentThread() << Q_FUNC_INFO << "about to construct our component";
     QQmlComponent component(engine);
     component.setData(qml.toUtf8(), url);
 
@@ -1013,9 +1016,12 @@ ReturnedValue QtObject::method_createQmlObject(CallContext *ctx)
         return ctx->engine()->throwError(v);
     }
 
-    if (!component.isReady())
+    if (!component.isReady()) {
+        qDebug() << QThread::currentThread() << Q_FUNC_INFO << "about to throw and return because component is not ready";
         V4THROW_ERROR("Qt.createQmlObject(): Component is not ready");
+    }
 
+    qDebug() << QThread::currentThread() << Q_FUNC_INFO << "about to call component.beginCreate";
     QObject *obj = component.beginCreate(effectiveContext);
     if (obj) {
         QQmlData::get(obj, true)->explicitIndestructibleSet = false;
@@ -1030,6 +1036,7 @@ ReturnedValue QtObject::method_createQmlObject(CallContext *ctx)
                 break;
         }
     }
+    qDebug() << QThread::currentThread() << Q_FUNC_INFO << "about to call component.completeCreate";
     component.completeCreate();
 
     if (component.isError()) {
