  /// @brief broadcasts an event
  ////////////////////////////////////////////////////////////////////////////////
  
+diff --git a/lib/BasicsC/memory.c b/lib/BasicsC/memory.c
+index 71b4d69..12b53a6 100644
+--- a/lib/BasicsC/memory.c
++++ b/lib/BasicsC/memory.c
+@@ -181,6 +181,7 @@ void* TRI_Allocate (TRI_memory_zone_t* zone, uint64_t n, bool set) {
+ 
+   if (m == NULL) {
+     if (zone->_failable) {
++      LOG_TRACE("malloc returned 0");
+       return NULL;
+     }
+ 

 
           TRI_RemoveKeyAssociativePointer(&store->_ids, &shadow->_id);
           TRI_RemoveKeyAssociativePointer(&store->_pointers, shadow->_data);
diff --git a/html/admin/js/modules/simple-query-basics.js b/html/admin/js/modules/simple-query-basics.js
index fcbe6f4..5f6b0ca 100644
--- a/html/admin/js/modules/simple-query-basics.js

 
 // -----------------------------------------------------------------------------
 // --SECTION--                                                  HELPER FUNCTIONS
@@ -639,20 +640,26 @@ static v8::Handle<v8::Value> ExecuteSkiplistQuery (v8::Arguments const& argv, st
   // inside a read transaction
   // .............................................................................
 
+  LOG_TRACE("before beginRead");
   collection->_collection->beginRead(collection->_collection);
+  LOG_TRACE("after beginRead");
 
   // extract the index
   TRI_index_t* idx = TRI_LookupIndexByHandle(sim->base.base._vocbase, collection, argv[0], false, &err);
 
   if (idx == 0) {
+    LOG_TRACE("before endRead");
     collection->_collection->endRead(collection->_collection);
+    LOG_TRACE("after endRead");
 
     TRI_ReleaseCollection(collection);
     return scope.Close(v8::ThrowException(err));
   }
 
   if (idx->_type != TRI_IDX_TYPE_SKIPLIST_INDEX) {
+    LOG_TRACE("before endRead");
     collection->_collection->endRead(collection->_collection);
+    LOG_TRACE("after endRead");
 
     TRI_ReleaseCollection(collection);
     return scope.Close(v8::ThrowException(TRI_CreateErrorObject(TRI_ERROR_BAD_PARAMETER, "index must be a skiplist index")));
@@ -668,7 +675,9 @@ static v8::Handle<v8::Value> ExecuteSkiplistQuery (v8::Arguments const& argv, st
   }
 
   if (!skiplistOperator) {
+    LOG_TRACE("before endRead");
     collection->_collection->endRead(collection->_collection);
+    LOG_TRACE("after endRead");
 
     TRI_ReleaseCollection(collection);
     return scope.Close(v8::ThrowException(TRI_CreateErrorObject(TRI_ERROR_BAD_PARAMETER, "setting up skiplist operator failed")));
@@ -699,7 +708,9 @@ static v8::Handle<v8::Value> ExecuteSkiplistQuery (v8::Arguments const& argv, st
     }
   }
 
+  LOG_TRACE("before endRead");
   collection->_collection->endRead(collection->_collection);
+  LOG_TRACE("after endRead");
 
   // .............................................................................
   // outside a write transaction
@@ -836,7 +847,9 @@ static v8::Handle<v8::Value> ExecuteBitarrayQuery (v8::Arguments const& argv, st
   // inside a read transaction
   // .............................................................................
 
+  LOG_TRACE("before beginRead");
   collection->_collection->beginRead(collection->_collection);
+  LOG_TRACE("after beginRead");
 
 
   // .............................................................................
@@ -846,7 +859,9 @@ static v8::Handle<v8::Value> ExecuteBitarrayQuery (v8::Arguments const& argv, st
   TRI_index_t* idx = TRI_LookupIndexByHandle(sim->base.base._vocbase, collection, argv[0], false, &err);
 
   if (idx == 0) {
+    LOG_TRACE("before endRead");
     collection->_collection->endRead(collection->_collection);
+    LOG_TRACE("after endRead");
 
     TRI_ReleaseCollection(collection);
     return scope.Close(v8::ThrowException(err));
@@ -854,7 +869,9 @@ static v8::Handle<v8::Value> ExecuteBitarrayQuery (v8::Arguments const& argv, st
   
   
   if (idx->_type != TRI_IDX_TYPE_BITARRAY_INDEX) {
+    LOG_TRACE("before endRead");
     collection->_collection->endRead(collection->_collection);
+    LOG_TRACE("after endRead");
 
     TRI_ReleaseCollection(collection);
     return scope.Close(v8::ThrowException(TRI_CreateErrorObject(TRI_ERROR_BAD_PARAMETER, "index must be a skiplist index")));
@@ -872,7 +889,9 @@ static v8::Handle<v8::Value> ExecuteBitarrayQuery (v8::Arguments const& argv, st
 
   
   if (indexOperator == 0) { // something wrong
+    LOG_TRACE("before endRead");
     collection->_collection->endRead(collection->_collection);
+    LOG_TRACE("after endRead");
 
     TRI_ReleaseCollection(collection);
     return scope.Close(v8::ThrowException(TRI_CreateErrorObject(TRI_ERROR_BAD_PARAMETER, "setting up skiplist operator failed")));
@@ -925,7 +944,9 @@ static v8::Handle<v8::Value> ExecuteBitarrayQuery (v8::Arguments const& argv, st
     LOG_WARNING("index iterator returned with a NULL value in ExecuteBitarrayQuery");
   }
   
+  LOG_TRACE("before endRead");
   collection->_collection->endRead(collection->_collection);
+  LOG_TRACE("after endRead");
 
   // .............................................................................
   // outside a write transaction
@@ -1097,7 +1118,9 @@ static v8::Handle<v8::Value> EdgesQuery (TRI_edge_direction_e direction, v8::Arg
   // inside a read transaction
   // .............................................................................
 
+  LOG_TRACE("before beginRead");
   collection->_collection->beginRead(collection->_collection);
+  LOG_TRACE("after beginRead");
 
   TRI_barrier_t* barrier = 0;
   uint32_t count = 0;
@@ -1157,7 +1180,9 @@ static v8::Handle<v8::Value> EdgesQuery (TRI_edge_direction_e direction, v8::Arg
         TRI_ReleaseCollection(vertexCollection);
       }
 
+      LOG_TRACE("before endRead");
       collection->_collection->endRead(collection->_collection);
+      LOG_TRACE("after endRead");
 
       TRI_ReleaseCollection(collection);
       return scope.Close(v8::ThrowException(errMsg));
@@ -1180,7 +1205,9 @@ static v8::Handle<v8::Value> EdgesQuery (TRI_edge_direction_e direction, v8::Arg
     TRI_DestroyVectorPointer(&edges);
   }
 
+  LOG_TRACE("before endRead");
   collection->_collection->endRead(collection->_collection);
+  LOG_TRACE("after endRead");
 
   // .............................................................................
   // outside a write transaction
@@ -1210,6 +1237,7 @@ static v8::Handle<v8::Value> EdgesQuery (TRI_edge_direction_e direction, v8::Arg
 static v8::Handle<v8::Value> JS_AllQuery (v8::Arguments const& argv) {
   v8::HandleScope scope;
 
