On Tue, 21 Jun 2011, Aleks Kissinger wrote:
On a related note, any idea why Par_List.exists would raise the
"EXCEPTIONS []" exception? The predicate function shouldn't be throwing
exceptions (at least it doesn't with List.exists substituted in), and
doesn't use side effects.
EXCEPTIONS [] means spontanous cancellation, say via external interrupt or
internal sigalling from peer task groups. E.g. there could be a stack
overflow in one future task. The Poly/ML runtime systems turns this into
exception Interrupt, which the future scheduler will propagate to other
futures of the same group, turning it into EXCEPTIONS [] at some point.
(There can also some boundary cases with *incorrect* treatment in my
implementation. I have had rare situations where there are some surprises
concerning this.)
Anyway, you can check with Multithreading.max_threads := 1 without any
special things getting in between. If you now see Interrupt it means
Poly/ML RTS failure, typically stack overflow (max. 64MB) or virtual
memory exhaustion (max. 2GB). You can then try with x86_64 to see if the
problem persists, although it might lead to disk thrashing instead.
Assuming that you have Isabelle2011, this is how to configure x86_64 in
your $HOME/.isabelle/etc/settings file:
ML_PLATFORM="$ISABELLE_PLATFORM64"
ML_HOME="$ISABELLE_HOME/contrib/polyml-5.4.0/$ML_PLATFORM"
ML_SYSTEM=polyml-5.4.0
ML_OPTIONS="-H 1000"
ML_SOURCES="$ML_HOME/../src"
You then need to build Pure for that platform:
Isabelle2011/build Pure
or on Mac OS X:
Isabelle2011.app/Isabelle/build Pure
Makarius
_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml