RE: [MLton] Crash fread(...) failed (only read 0) (Cannot al…

Top Page
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Matthew Fluet
To: Nicolas Bertolotti
CC: Matthew Fluet,
Subject: RE: [MLton] Crash fread(...) failed (only read 0) (Cannot allocate memory) during deepFlatten with MLton 20070826
On Tue, 22 Apr 2008, Nicolas Bertolotti wrote:
> There was actually another bug in heap.c. Here is an additional patch to fix it:
> --- mlton/runtime/gc/heap.c   2008-04-11 19:12:58.000000000 +0200
> +++ mltonp1/runtime/gc/heap.c 2008-04-22 16:24:50.000000000 +0200
> @@ -337,6 +337,7 @@
>       }
>       GC_diskBack_read (data, curHeapp->start, size);
>       GC_diskBack_close (data);
> +      curHeapp->oldGenSize = size;
>     } else {
>       GC_diskBack_close (data);
>       if (s->controls.messages)

Yes, I was just coming to that exact conclusion.

> Unfortunately, now, I get the following error:
>            deepFlatten starting
> Out of memory.  Unable to allocate 1,686,393,408 bytes.

> ... which, I guess, is a different problem.

It is a different problem, in the sense that you succeeded (at least
once) in writing the heap to disk, allocating a larger heap, and reading
the heap from disk. Getting an out of memory error suggests that even
after writing the heap to disk and releasing it, the operating system was
unable to mmap 1.6G. That seems strange, even on a 32bit system, where
the virtual address space is 4G, though I suppose it could happen with
sufficient fragmentation.

If you compile with @MLton gc-messages --, you should get a more detailed
memory listing of what memory is reserved, which might indicate whether
there is some extra memory being held.

MLton mailing list