termination message indicates whether the sandbox died because of memory limit
svn: r12788
This commit is contained in:
parent
83f4d6687d
commit
c76a23ed29
|
@ -480,8 +480,9 @@
|
||||||
|
|
||||||
(define (make-evaluator* init-hook allow program-maker)
|
(define (make-evaluator* init-hook allow program-maker)
|
||||||
(define orig-cust (current-custodian))
|
(define orig-cust (current-custodian))
|
||||||
(define user-cust (make-custodian orig-cust))
|
(define memory-cust (make-custodian orig-cust))
|
||||||
(define user-cust-box (make-custodian-box user-cust #t))
|
(define memory-cust-box (make-custodian-box memory-cust #t))
|
||||||
|
(define user-cust (make-custodian memory-cust))
|
||||||
(define coverage? (sandbox-coverage-enabled))
|
(define coverage? (sandbox-coverage-enabled))
|
||||||
(define uncovered #f)
|
(define uncovered #f)
|
||||||
(define input-ch (make-channel))
|
(define input-ch (make-channel))
|
||||||
|
@ -545,7 +546,9 @@
|
||||||
(loop))])
|
(loop))])
|
||||||
(sync user-done-evt result-ch))))
|
(sync user-done-evt result-ch))))
|
||||||
eof)])
|
eof)])
|
||||||
(cond [(eof-object? r) (error 'evaluator "terminated")]
|
(cond [(eof-object? r) (error 'evaluator "terminated~a"
|
||||||
|
(if (custodian-box-value memory-cust-box)
|
||||||
|
"" " (memory exceeded)"))]
|
||||||
[(eq? (car r) 'exn) (raise (cdr r))]
|
[(eq? (car r) 'exn) (raise (cdr r))]
|
||||||
[else (apply values (cdr r))])))
|
[else (apply values (cdr r))])))
|
||||||
(define get-uncovered
|
(define get-uncovered
|
||||||
|
@ -574,9 +577,7 @@
|
||||||
(if (evaluator-message? expr)
|
(if (evaluator-message? expr)
|
||||||
(let ([msg (evaluator-message-msg expr)])
|
(let ([msg (evaluator-message-msg expr)])
|
||||||
(case msg
|
(case msg
|
||||||
[(alive?) (and (custodian-box-value user-cust-box)
|
[(alive?) (and user-thread (not (thread-dead? user-thread)))]
|
||||||
user-thread
|
|
||||||
(not (thread-dead? user-thread)))]
|
|
||||||
[(kill) (user-kill)]
|
[(kill) (user-kill)]
|
||||||
[(break) (user-break)]
|
[(break) (user-break)]
|
||||||
[(limits) (set! limits (evaluator-message-args expr))]
|
[(limits) (set! limits (evaluator-message-args expr))]
|
||||||
|
@ -610,7 +611,7 @@
|
||||||
;; set global memory limit
|
;; set global memory limit
|
||||||
(when (sandbox-memory-limit)
|
(when (sandbox-memory-limit)
|
||||||
(custodian-limit-memory
|
(custodian-limit-memory
|
||||||
user-cust (* (sandbox-memory-limit) 1024 1024) user-cust))
|
memory-cust (* (sandbox-memory-limit) 1024 1024) memory-cust))
|
||||||
(parameterize* ; the order in these matters
|
(parameterize* ; the order in these matters
|
||||||
(;; create a sandbox context first
|
(;; create a sandbox context first
|
||||||
[current-custodian user-cust]
|
[current-custodian user-cust]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user