Thanks, it seems the exception is raised by the function grow_stacks() in the 'Parsing' module of Ocaml (not mine). Indeed, looking at the code I can see several calls to Array.create that are not encapsulated in a try .. with. Isn't that a bug ? Anyway I think I found the answer of my problem. Cheers! 2011/1/4 Török Edwin > On 2011-01-04 15:41, Jean Krivine wrote: > > Hi all, > > > > I am encountering a weird problem, I am trying to parse a very large file > > (around 1.2 GB) according to a grammar defined in ocamlyacc. > > On a 32-bit or 64-bit architecture? > > > During the parsing I get the exception > > > > Invalid_argument "Array.make". > > > > This is strange because I am not using any array. > > You can try calling 'Printexc.record_backtrace true' on startup, and > compile with -g. If you compile to bytecode the stacktrace will usually > be better, but that is not always accurate either. > > Another way is to run your bytecode in ocamldebug, and use 'backstep' > from the point where exception is raised. > > > My guess it that a big chunk of the file I am parsing is matching a non > > terminal, something like > > > > rule: > > non_term END {blah}; > > > > where non_term is going to be 1GB of characters. Does anyone know what > > could be raising the exception ? > > Trying to allocate a too big array: > > #ifdef ARCH_SIXTYFOUR > #define Max_wosize (((intnat)1 << 54) - 1) > #else > #define Max_wosize ((1 << 22) - 1) > #endif > if (wsize > Max_wosize) caml_invalid_argument("Array.make"); > > > > Thanks! > > J > > > > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa-roc.inria.fr/wws/info/caml-list > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > >