added a clarifying example for how limits interact
svn: r12864
This commit is contained in:
parent
43124c2ec5
commit
e5027cb7b0
|
@ -521,7 +521,23 @@ the highest custodian that refers to it. This means that if you
|
||||||
inspect a value that sandboxed evaluation returns outside of the
|
inspect a value that sandboxed evaluation returns outside of the
|
||||||
sandbox, your own custodian will be charged for it. To ensure that it
|
sandbox, your own custodian will be charged for it. To ensure that it
|
||||||
is charged back to the sandbox, you should remove references to such
|
is charged back to the sandbox, you should remove references to such
|
||||||
values when the code is done inspecting it.}
|
values when the code is done inspecting it.
|
||||||
|
|
||||||
|
This policy has an impact on how the sandbox memory limit interacts
|
||||||
|
with the the per-expression limit specified by
|
||||||
|
@scheme[sandbox-eval-limits]: values that are reachable from the
|
||||||
|
sandbox, as well as from the interaction will count against the
|
||||||
|
sandbox limit. For example, in the last interaction of this code,
|
||||||
|
@schemeblock[
|
||||||
|
(define e (make-evaluator 'scheme/base))
|
||||||
|
(e '(define a 1))
|
||||||
|
(e '(for ([i (in-range 20)]) (set! a (cons (make-bytes 500000) a))))
|
||||||
|
]
|
||||||
|
the memory blocks are allocated within the interaction limit, but
|
||||||
|
since they're chained to the defined variable, they're also reachable
|
||||||
|
from the sandbox --- so they will count against the sandbox memory
|
||||||
|
limit but not against the interaction limit (more precisely, no more
|
||||||
|
than one block counts against the interaction limit).}
|
||||||
|
|
||||||
|
|
||||||
@defparam[sandbox-eval-limits limits
|
@defparam[sandbox-eval-limits limits
|
||||||
|
|
Loading…
Reference in New Issue
Block a user