Changeset: eb30bdbf91d9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eb30bdbf91d9
Modified Files:
        gdk/gdk_posix.c
Branch: Feb2013
Log Message:

MT_mremap(): (temporarily) log some debugging info to server stderr in case of 
failure


diffs (100 lines):

diff --git a/gdk/gdk_posix.c b/gdk/gdk_posix.c
--- a/gdk/gdk_posix.c
+++ b/gdk/gdk_posix.c
@@ -412,8 +412,10 @@ MT_mremap(const char *path, int mode, vo
        if (*new_size < old_size) {
                /* shrink */
                if (munmap((char *) old_address + *new_size,
-                          old_size - *new_size) < 0)
+                          old_size - *new_size) < 0) {
+                       fprintf(stderr, "= %s:%d: 
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): munmap() failed\n", __FILE__, __LINE__, 
path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size);
                        return NULL;
+               }
                if (truncate(path, (off_t) *new_size) < 0)
                        fprintf(stderr, "#MT_mremap(%s): truncate failed\n", 
path);
 #ifdef MMAP_DEBUG
@@ -433,11 +435,14 @@ MT_mremap(const char *path, int mode, vo
                /* "normal" memory map */
                struct stat stb;
 
-               if ((fd = open(path, O_RDWR)) < 0)
+               if ((fd = open(path, O_RDWR)) < 0) {
+                       fprintf(stderr, "= %s:%d: 
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): open() failed\n", __FILE__, __LINE__, 
path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size);
                        return NULL;
+               }
                if (fstat(fd, &stb) < 0) {
                        /* shouldn't happen */
                        close(fd);
+                       fprintf(stderr, "= %s:%d: 
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): fstat() failed\n", __FILE__, __LINE__, 
path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size);
                        return NULL;
                }
                /* if necessary, extend the underlying file */
@@ -445,6 +450,7 @@ MT_mremap(const char *path, int mode, vo
                    (lseek(fd, *new_size - 1, SEEK_SET) < 0 ||
                     write(fd, "\0", 1) < 0)) {
                        close(fd);
+                       fprintf(stderr, "= %s:%d: 
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): lseek() or write() failed\n", __FILE__, 
__LINE__, path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size);
                        return NULL;
                }
 #ifdef HAVE_MREMAP
@@ -483,8 +489,10 @@ MT_mremap(const char *path, int mode, vo
 #ifdef MAP_ANONYMOUS
                flags |= MAP_ANONYMOUS;
 #else
-               if ((fd = open("/dev/zero", O_RDWR)) < 0)
+               if ((fd = open("/dev/zero", O_RDWR)) < 0) {
+                       fprintf(stderr, "= %s:%d: 
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): open('/dev/zero') failed\n", __FILE__, 
__LINE__, path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size);
                        return NULL;
+               }
 #endif
                /* try to map an anonymous area as extent to the
                 * current map */
@@ -548,14 +556,17 @@ MT_mremap(const char *path, int mode, vo
                                        fd = open(p, O_RDWR | O_CREAT,
                                                  MONETDB_MODE);
                                        free(p);
-                                       if (fd < 0)
+                                       if (fd < 0) {
+                                               fprintf(stderr, "= %s:%d: 
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): fd < 0\n", __FILE__, __LINE__, 
path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size);
                                                return NULL;
+                                       }
                                        if (write(fd, old_address,
                                                  old_size) < 0 ||
                                            lseek(fd, *new_size - 1,
                                                  SEEK_SET) < 0 ||
                                            write(fd, "\0", 1) < 0) {
                                                close(fd);
+                                               fprintf(stderr, "= %s:%d: 
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): write() or lseek() or write() 
failed\n", __FILE__, __LINE__, path?path:"NULL", PTRFMTCAST old_address, 
old_size, *new_size);
                                                return NULL;
                                        }
                                        p = mmap(NULL, *new_size, prot, flags,
@@ -572,6 +583,8 @@ MT_mremap(const char *path, int mode, vo
 #ifdef MMAP_DEBUG
        fprintf(stderr, "MT_mremap(%s,"PTRFMT","SZFMT","SZFMT") -> 
"PTRFMT"%s\n", path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size, 
PTRFMTCAST p, path && mode & MMAP_COPY ? " private" : "");
 #endif
+       if (p == MAP_FAILED)
+               fprintf(stderr, "= %s:%d: 
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): p == MAP_FAILED\n", __FILE__, __LINE__, 
path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size);
        return p == MAP_FAILED ? NULL : p;
 }
 
@@ -783,8 +796,10 @@ MT_mremap(const char *path, int mode, vo
                *new_size = old_size;
                return old_address;     /* don't bother shrinking */
        }
-       if (GDKextend(path, *new_size) < 0)
+       if (GDKextend(path, *new_size) < 0) {
+               fprintf(stderr, "= %s:%d: 
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): GDKextend() failed\n", __FILE__, 
__LINE__, path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size);
                return NULL;
+       }
        if (path && !(mode & MMAP_COPY))
                MT_munmap(old_address, old_size);
        p = MT_mmap(path, mode, *new_size);
@@ -795,6 +810,8 @@ MT_mremap(const char *path, int mode, vo
 #ifdef MMAP_DEBUG
        fprintf(stderr, "MT_mremap(%s,"PTRFMT","SZFMT","SZFMT") -> "PTRFMT"\n", 
path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size, PTRFMTCAST p);
 #endif
+       if (p == NULL)
+               fprintf(stderr, "= %s:%d: 
MT_mremap(%s,"PTRFMT","SZFMT","SZFMT"): p == NULL\n", __FILE__, __LINE__, 
path?path:"NULL", PTRFMTCAST old_address, old_size, *new_size);
        return p;
 }
 
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to