On Mar 13, 2012, at 1:48 PM, Robby Findler wrote: > Do you get a stacktrace with the error?
No -- since errors are being caught by the handin server, I assume -- but I've narrowed it down a bit by now and can offer some more specifics: In (parameterize ([sandbox-namespace-specs (list make-base-namespace 'hw/solutions)]) ...create two evaluators...) I was neglecting to include '2htdp/image in the namespace specs list, and adding it eliminated the error message about accessing preferences. I also found, in experimenting, that * creating either one of the two evaluators alone is sufficient to trigger the error -- make-evaluator/submission and make-module-evaluator behave the same in this regard. * it does not matter whether '2htdp/image is included in the allow-read list passed to either of the make-evaluator functions. In any case, I seem to have found my fix for the moment, but if I can help you track down where that obscure error message originated and why, let me know and I'll be glad to. Incidentally, separate from the concern of my initial post: In the body of that (parameterize ...) expression, I found i have to create the second evaluator thus: (make-module-evaluator (build-path asg-dir "solution.rkt") #:allow-read '(hw/solutions)) where hw is a collection I have linked to a directory (via raco link). If I omit the #:allow-read as I did originally (quoted below), I get this error in the server log and via the client UI: ERROR: file-exists?: `exists' access denied for /<path to hw collection>/solutions.rkt I would rather not expose my system pathnames to the end users, so I assume the best way is to catch this kind of error explicitly in the code that creates the evaluators. (In addition to doing the right thing by including the #:allow-read, of course; I realized, while testing, that the student can trigger this message if they (require...) my library name from their file.) Does that sound about right? My effort here is aimed at building a little framework whereby I can write up the assignment solution in a file separate from the checker, and use my solution in checking student code. I'd like a checker file to specify the logic of how I want *most or all* assignments graded, so they're largely the same from assignment to assignment, while the assignment-specific required-names info and test cases can reside with my solution code -- the code that any changes to the assignment would affect directly. I'll let you all know when I get it to a point of sufficient robustness & utility to be worth sharing. Thanks for your help. Best, jmj > > Robby > > On Tue, Mar 13, 2012 at 3:06 PM, Jordan Johnson <j...@fellowhuman.com> wrote: >> Hi all, >> >> I'm trying to write a checker script for the handin server (which is running >> on my Mac), and when i try handing an assignment in to it, I am getting the >> error that read access to my preferences file is denied: >> >> ERROR: file-or-directory-modify-seconds: 'read' access denied for >> /Users/myusername/Library/Preferences/org.racket-lang.prefs.rktd >> >> In the checker I am creating two evaluators, one using >> make-evaluator/submission and the other using make-module-evaluator. I have >> determined that this definition is provoking the error: >> ;; >> (define-values (asg-eval solution-eval) >> (parameterize ([sandbox-namespace-specs >> (list make-base-namespace 'hw/solutions)]) >> (values >> (make-evaluator/submission >> '(special intermediate) >> '() >> submission) >> (make-module-evaluator (build-path asg-dir "solution.rkt"))))) >> ;; >> >> submission is bound by the handin server's check: macro, and asg-dir is >> defined thus: >> (define asg-dir (build-path server-dir "my-handin-directory-here")) >> where server-dir is also provided by the handin server. solution.rkt is a >> file I have written in ISL, which depends only on 2htdp/image and a library >> I've linked as hw/solutions. >> >> Can you identify what may be triggering the attempt to read preferences, and >> how I can either avoid it or grant appropriate read permissions? Thanks... >> >> Best, >> Jordan >> >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users