[isabelle-dev] exception Size raised (line 173 of "./basis/LibrarySupport.sml")

Makarius makarius at sketis.net
Thu Feb 21 17:47:52 CET 2013


On Thu, 21 Feb 2013, Makarius wrote:

> This is how to configure x86_64 in $ISABELLE_HOME_USER/etc/settings:
>
>  ML_PLATFORM="$ISABELLE_PLATFORM64"
>  ML_HOME="$ML_HOME/../$ML_PLATFORM"
>

Actually doing this reveals further resource limitations.  First of all, 
Oracle needs to be instructed to provide a bit more heap space like this:

JEDIT_JAVA_OPTIONS="-Xms512m -Xmx4096m -Xss8m -Dactors.corePoolSize=4 -Dactors.enableForkJoin=false"

See also ~~/src/Tools/jEdit/etc/settings for some more examples.


Then the goal can be printed and digested by the front-end, but it is all 
very huge and takes minutes to get through.


Here is some ML snipped to get an idea about size of output:

ML_val {*
   fun pr_size st =
     size (Pretty.string_of (Pretty.chunks (Proof.pretty_state 1 (Toplevel.proof_of st))));

   pr_size @{Isar.state};  (* with PIDE markup *)
   (* 139371907 *)

   Print_Mode.setmp [] pr_size @{Isar.state};  (* raw output *)
   (* 15882084 *)
*}

130 MB is a bit much for the whole syntax stack and editor front-end, but 
it is only factor 2 beyond the 64 MB string limit in 32bit mode.

15 MB for the raw text is also quite something.  We also see that PIDE 
markup is only a factor 10 larger, even though it marks all formal 
entities and type information for atomic subterms.  (The type information 
is approx. a factor of 2, but I did not measure this here.)


We are presently in this bounded 32bit address space by default, which is 
2GB .. 3.5 GB depending on the platform. I find its early failure 
behaviour more convenient, than denial of service of the overall system. 
For example, certain situations of non-termination produce a Interrupt 
exception due to stack overflow, instead of filling up VM space 
indefinitely.


 	Makarius




More information about the isabelle-dev mailing list