diff --git a/include/fmq/MessageQueue.h b/include/fmq/MessageQueue.h
index 848b77f..ca031aa 100644
--- a/include/fmq/MessageQueue.h
+++ b/include/fmq/MessageQueue.h
@@ -1169,7 +1169,14 @@
 void* MessageQueue<T, flavor>::mapGrantorDescr(uint32_t grantorIdx) {
     const native_handle_t* handle = mDesc->handle();
     auto grantors = mDesc->grantors();
-    if ((handle == nullptr) || (grantorIdx >= grantors.size())) {
+    if (handle == nullptr) {
+        details::logError("mDesc->handle is null");
+        return nullptr;
+    }
+
+    if (grantorIdx >= grantors.size()) {
+        details::logError(std::string("grantorIdx must be less than ") +
+                          std::to_string(grantors.size()));
         return nullptr;
     }
 
@@ -1183,10 +1190,11 @@
 
     void* address = mmap(0, mapLength, PROT_READ | PROT_WRITE, MAP_SHARED,
                          handle->data[fdIndex], mapOffset);
-    return (address == MAP_FAILED)
-            ? nullptr
-            : reinterpret_cast<uint8_t*>(address) +
-            (grantors[grantorIdx].offset - mapOffset);
+    if (address == MAP_FAILED) {
+        details::logError(std::string("mmap failed: ") + std::to_string(errno));
+        return nullptr;
+    }
+    return reinterpret_cast<uint8_t*>(address) + (grantors[grantorIdx].offset - mapOffset);
 }
 
 template <typename T, MQFlavor flavor>
