Just so we're clear, this should not OOM, but rather print #t?
#lang racket/load
(module A racket
(provide global go)
(define global '())
(define (go) (set! global (cons (random) global)) (go)))
(module B racket
(require racket/sandbox)
(display
(with-handlers ([exn:fail:resource? (λ (e)
(case (exn:fail:resource-resource e)
[(memory) #t]
[else #f]))])
(call-with-limits 10000 512 (λ () ((dynamic-require ''A 'go)))))))
(require 'B)
-Ian
----- Original Message -----
From: "Robby Findler" <[email protected]>
To: "J. Ian Johnson" <[email protected]>
Cc: "dev" <[email protected]>
Sent: Wednesday, September 11, 2013 3:34:55 PM GMT -05:00 US/Canada Eastern
Subject: Re: [racket-dev] call-with-limits memory bound isn't actually bounding
memory usage
The namespace...?
On Wed, Sep 11, 2013 at 2:20 PM, J. Ian Johnson < [email protected] > wrote:
I've since changed to using a dynamic-require, but still the memory limit is
not respected. Why wouldn the globals from a dynamic-require be considered
reachable outside the sandbox that calls dynamic-require? There's no other way
to get it.
-Ian
----- Original Message -----
From: "J. Ian Johnson" < [email protected] >
To: "David Vanderson" < [email protected] >
Cc: "dev" < [email protected] >, "J. Ian Johnson" < [email protected] >
Sent: Monday, September 9, 2013 2:01:02 PM GMT -05:00 US/Canada Eastern
Subject: Re: [racket-dev] call-with-limits memory bound isn't actually bounding
memory usage
Ah, that would probably be the problem. Without having to modify too much code,
would the proper way to call a function entirely within the sandbox be to use
dynamic-require in the thunk, rather than require in the module using
call-with-limits?
-Ian
----- Original Message -----
From: "David Vanderson" < [email protected] >
To: "J. Ian Johnson" < [email protected] >
Cc: "dev" < [email protected] >
Sent: Monday, September 9, 2013 1:50:13 PM GMT -05:00 US/Canada Eastern
Subject: Re: [racket-dev] call-with-limits memory bound isn't actually bounding
memory usage
Just to make sure, is the memory being allocated reachable from outside
the sandbox?
http://www.cs.utah.edu/plt/publications/ismm04-addendum.txt
On 09/09/2013 01:29 PM, J. Ian Johnson wrote:
> I don't use the gui framework at all. This is all just pounding on global
> hash-tables and vectors. Or are you talking about the sandbox queuing up
> callbacks?
> -Ian
> ----- Original Message -----
> From: "Robby Findler" < [email protected] >
> To: "J. Ian Johnson" < [email protected] >
> Cc: "dev" < [email protected] >
> Sent: Monday, September 9, 2013 1:16:51 PM GMT -05:00 US/Canada Eastern
> Subject: Re: [racket-dev] call-with-limits memory bound isn't actually
> bounding memory usage
>
>
> The framework will, sometimes do stuff that queues callbacks and, depending
> on how you've set up other things, the code running there might escape from
> the limit. Did you try putting the eventspace under the limit too?
>
> Robby
>
>
>
> On Mon, Sep 9, 2013 at 10:54 AM, J. Ian Johnson < [email protected] > wrote:
>
>
> I'm running my analysis benchmarks in the context of (with-limits (* 30 60)
> 2048 <run-analysis>), and it's been good at killing the process when the run
> should time out, but now I have an instantiation of the framework that just
> gobbles up 15GiB of memory without getting killed. What might be going on
> here?
>
> Running 5.90.0.9
> -Ian
> _________________________
> Racket Developers list:
> http://lists.racket-lang.org/dev
>
> _________________________
> Racket Developers list:
> http://lists.racket-lang.org/dev
>
_________________________
Racket Developers list:
http://lists.racket-lang.org/dev
_________________________
Racket Developers list:
http://lists.racket-lang.org/dev