continuing death
Henry Cejtin
henry@sourcelight.com
Sun, 25 Nov 2001 21:51:20 -0600
Here is a very small example of the problem. It is small in the sense that
the source is small, but it I still only get it to fail running on a 1-gig
machine with max-heap set to 770 megabytes and an input file which is
170,000,000 bytes long.
The program just reads (using Posix.IO.readArr) into an array. The array is
doubled in size when it is filled, and the old half is copied into the new
array and reading keeps going until EOF is finally reached.
In this version, compiled with the latest compiler, and
-g
-native false
-DGC_EVERY_CHECK
-DINSTRUMENTED
it dies in MLton_exit, which called GC_done(), the problem being detected in
the GC_enter() called from there. The invariant code finds the same things
as before: a `stack' which has a reserved of 32,768 but a used of
858,927,408.
I looked at the code, but found it relatively unreadable. It doesn't look
like any thing wierd is going on after the read returns 0, and read returned
non-zero many many times.
I am open to any new ideas or suggestions of things to try.
begin 600 die.sml.tgz
M'XL(`".\`3P"`^V4P4[;0!"&?;6?8FZQJ65M$C=0(0X<0.JA!)5#CY5AUV)5
M8Z-=AS94O#LS:SLXBA4,$CU4\QT2>V?GGYF=64NM$GM7>!^)F`JQ2%-/(.E,
MN/]I^X[,9M-#3QRF0LSGZ>?Y`O=/\<4#X?T#5K;.#(!WJTJSWKM/&>O]=X0'
M`1S`=Y5)T"5DD.M"X5-=P2^UM@D:HR!?E6!PQSG9<@DG`304J@8R%E5U#Z%1
M-@:K'U4,>%@R>MG7@UP>L@)*.('+RNH_R==E0N*GQD"8RQC^PO4J1RO)#0B,
M0:,[I?!>?_N(`A?+BS-X@FA``T]*YZX$$?B^7^/L4+K#T51AU:9LRFK29@>?
MH-R38!.D<Z!S?;4:ET@7BCPZ3PPU2F`#"6!%Z$\%(C\J(X^P1]DZR>@70J<?
MMV;?!Q"_130N`I;6T[NI[M?8=6MNNJYO)"UU4O06"D6G?K7\=M:<3,\D;=WX
M;RTZ`7@Z'EWZ9I8GS3!/FFF>C"Q-E?+5C<U$#-V9O5&&I7NKNKN)N\U*Q9=%
M[#JT>R><;6?UI9<4P7T#[C*,$$;;]Y\FY:<[^/8#T=QJ>KS"#XBMI2Y["8;;
JLIUW*QUX#,,P#,,P#,,P#,,P#,,P#,,P#,,P#,,PS-MX!D5OK[$`*```
`
end