diff --git a/src/modules/system/memory.c b/src/modules/system/memory.c
index 415f278aef0390332a62f13e592e681645166792..955b9f736cd9a6cc246a5347e2e8dedd836aaac0 100644
--- a/src/modules/system/memory.c
+++ b/src/modules/system/memory.c
@@ -341,6 +341,9 @@ static void memory__mmap(INT32 args,int complain,int private)
       
       THREADS_ALLOW();
       fd = fd_open(filename,fd_RDWR,0);
+      if( fd < 0 )
+          fd = fd_open(filename,fd_RDONLY,0);
+
       if (fd>=0) osize=file_size(fd);
       THREADS_DISALLOW();