* [Caml-list] Seg fault with -custom and 2049 lets... @ 2001-04-12 18:31 David Fox 2001-04-13 14:01 ` David Fox ` (2 more replies) 0 siblings, 3 replies; 5+ messages in thread From: David Fox @ 2001-04-12 18:31 UTC (permalink / raw) To: caml-list If I create a program with 2049 simple functions: let f1 () = () let f2 () = () ... let f2049 () = () (You can build this using yes "" | cat -n | head -2049 | sed 's/^[^0-9]*\([0-9]*\)[^0-9]*$/let f\1 () = ()/' > y.ml) I get a seg fault if I compile it with the -custom flag and use a debugging version of malloc: % ocamlc -custom y.ml -ccopt -lefence % ./a.out Electric Fence 2.2.0 Copyright (C) 1987-1999 Bruce Perens <bruce@perens.com> Segmentation fault (core dumped) % or if I link using the debugging library libcamlrund.a: % ./a.out ### O'Caml runtime: debug mode ### Initial minor heap size: 128k bytes Initial major heap size: 248k bytes Initial space overhead: 42% Initial max overhead: 1000000% Initial heap increment: 248k bytes Initial stack limit: 1024k bytes file interp.c; line 255 ### Assertion failed: sp >= stack_low If I use the regular (non-debugging) library I don't get the seg fault immediately, but in a real life situation things get ugly pretty quickly. -david ------------------- To unsubscribe, mail caml-list-request@inria.fr. Archives: http://caml.inria.fr ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Caml-list] Seg fault with -custom and 2049 lets... 2001-04-12 18:31 [Caml-list] Seg fault with -custom and 2049 lets David Fox @ 2001-04-13 14:01 ` David Fox 2001-04-14 10:40 ` [Caml-list] Just wasted half-an-hour on returned curried functions Mattias Waldau 2001-04-17 15:04 ` [Caml-list] Seg fault with -custom and 2049 lets Xavier Leroy 2 siblings, 0 replies; 5+ messages in thread From: David Fox @ 2001-04-13 14:01 UTC (permalink / raw) To: caml-list By the way, this was on a Pentium 3 machine running Redhat Linux 7.0 and ocaml-3.01. David Fox <dsfox@COGSCI.ucsd.edu> writes: > If I create a program with 2049 simple functions: > > let f1 () = () > let f2 () = () > ... > let f2049 () = () > > (You can build this using yes "" | cat -n | head -2049 | > sed 's/^[^0-9]*\([0-9]*\)[^0-9]*$/let f\1 () = ()/' > y.ml) > > I get a seg fault if I compile it with the -custom flag and use a > debugging version of malloc: > > % ocamlc -custom y.ml -ccopt -lefence > % ./a.out > > Electric Fence 2.2.0 Copyright (C) 1987-1999 Bruce Perens <bruce@perens.com> > Segmentation fault (core dumped) > % > > or if I link using the debugging library libcamlrund.a: > > % ./a.out > ### O'Caml runtime: debug mode ### > Initial minor heap size: 128k bytes > Initial major heap size: 248k bytes > Initial space overhead: 42% > Initial max overhead: 1000000% > Initial heap increment: 248k bytes > Initial stack limit: 1024k bytes > file interp.c; line 255 ### Assertion failed: sp >= stack_low > > If I use the regular (non-debugging) library I don't get the seg fault > immediately, but in a real life situation things get ugly pretty > quickly. > > -david > ------------------- > To unsubscribe, mail caml-list-request@inria.fr. Archives: http://caml.inria.fr > -- $_='while(read+STDIN,$_,2048){$a=29;$b=73;$c=142;$t=255;@t=map{$_%16or$t^=$c^=( $m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t^=(72,@z=(64,72,$a^=12*($_%16 -2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271);if((@a=unx"C*",$_)[20]&48){$h =5;$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$ d=unxV,xb25,$_;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=$t&($d>>12^$d>>4^ $d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9,$_=$t[$_]^ (($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval ------------------- To unsubscribe, mail caml-list-request@inria.fr. Archives: http://caml.inria.fr ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Caml-list] Just wasted half-an-hour on returned curried functions 2001-04-12 18:31 [Caml-list] Seg fault with -custom and 2049 lets David Fox 2001-04-13 14:01 ` David Fox @ 2001-04-14 10:40 ` Mattias Waldau 2001-04-17 15:04 ` [Caml-list] Seg fault with -custom and 2049 lets Xavier Leroy 2 siblings, 0 replies; 5+ messages in thread From: Mattias Waldau @ 2001-04-14 10:40 UTC (permalink / raw) To: caml-list I removed the last int-argument of a function, but only changed at the calls and in the body, however not in the arguments, thus I had an unused arg called ~(idx:int), i.e. let bar a ~(idx:int) = { var = a ; .... } I created data using this function and these (now curried) arguments were put into an array, and there is where I got the type error. It took me 30 minutes to find the true source. I could have found the error if I would have typed the result of the above mentioned function either at the return value or in the let, i.e. writing let bar a ~(idx:int) :annotated_var = { var = a ; .... } or let x:annotated_var = ..... in However, the compiler could have found the error for immediately by either 1. Told me that ~(idx:int) is an unused argument 2. or, had a special syntax ( for example '=()' ) for curried values, for example, and by that immediately complain in the let above. I know that alternative 2 is an absurd suggestion in the church of FPLs :-) but I don't like wasting time. Could someone give me some example code (except lablgtk, which is a nice but very hard to understand program) where the majority of the returned values are functions. /mattias P.s. I don't understand how to get warning using ocamlc, for example in the below code I both override methods and hide instance variables, but get no warnings. let foo () = let x = 0 in let x = 1 in x let foo () = let x = 0 in let x = 1 in x ------------------- To unsubscribe, mail caml-list-request@inria.fr. Archives: http://caml.inria.fr ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Caml-list] Seg fault with -custom and 2049 lets... 2001-04-12 18:31 [Caml-list] Seg fault with -custom and 2049 lets David Fox 2001-04-13 14:01 ` David Fox 2001-04-14 10:40 ` [Caml-list] Just wasted half-an-hour on returned curried functions Mattias Waldau @ 2001-04-17 15:04 ` Xavier Leroy 2001-04-18 23:36 ` David Fox 2 siblings, 1 reply; 5+ messages in thread From: Xavier Leroy @ 2001-04-17 15:04 UTC (permalink / raw) To: David Fox; +Cc: caml-list > If I create a program with 2049 simple functions: > I get a seg fault if I compile it with the -custom flag and use a > debugging version of malloc: > or if I link using the debugging library libcamlrund.a: Yes, this is a bug in the bytecode compiler causing the virtual machine not to grow its stack enough to accommodate all the stack slots that your declaration requires. This will be fixed shortly. - Xavier Leroy ------------------- To unsubscribe, mail caml-list-request@inria.fr. Archives: http://caml.inria.fr ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Caml-list] Seg fault with -custom and 2049 lets... 2001-04-17 15:04 ` [Caml-list] Seg fault with -custom and 2049 lets Xavier Leroy @ 2001-04-18 23:36 ` David Fox 0 siblings, 0 replies; 5+ messages in thread From: David Fox @ 2001-04-18 23:36 UTC (permalink / raw) To: caml-list Xavier Leroy <Xavier.Leroy@inria.fr> writes: > > If I create a program with 2049 simple functions: > > I get a seg fault if I compile it with the -custom flag and use a > > debugging version of malloc: > > or if I link using the debugging library libcamlrund.a: > > Yes, this is a bug in the bytecode compiler causing the virtual > machine not to grow its stack enough to accommodate all the stack > slots that your declaration requires. This will be fixed shortly. I found a quick fix to get my X top level working: --- ocaml-3.01/byterun/config.h~ Sun Oct 29 09:36:41 2000 +++ ocaml-3.01/byterun/config.h Wed Apr 18 16:19:58 2001 @@ -76,7 +76,7 @@ #define Page_log 12 /* A page is 4 kilobytes. */ /* Initial size of stack (bytes). */ -#define Stack_size (4096 * sizeof(value)) +#define Stack_size (16384 * sizeof(value)) /* Minimum free size of stack (bytes); below that, it is reallocated. */ #define Stack_threshold (256 * sizeof(value)) ------------------- To unsubscribe, mail caml-list-request@inria.fr. Archives: http://caml.inria.fr ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2001-04-18 23:36 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2001-04-12 18:31 [Caml-list] Seg fault with -custom and 2049 lets David Fox 2001-04-13 14:01 ` David Fox 2001-04-14 10:40 ` [Caml-list] Just wasted half-an-hour on returned curried functions Mattias Waldau 2001-04-17 15:04 ` [Caml-list] Seg fault with -custom and 2049 lets Xavier Leroy 2001-04-18 23:36 ` David Fox
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).