[racket-dev] Is anybody else getting this error?

From: Gustavo Massaccesi (gustavo at oma.org.ar)
Date: Tue Feb 21 17:03:12 EST 2012

I saw an error like this a few days ago, but it was in a large
project. This is the minimal example to reproduce the error.

I guest that the problem is that a .zo exist for an older version of a
file that now doesn't compile. The error disappears if I delete all
the .zo files.

I am using the DrRacket version 5.2.1 for Windows.

I filled a bug report with the information:
http://bugs.racket-lang.org/query/?cmd=view&pr=12590

Steps to reproduce the error:

1) Create two directories "\dir" and "\dir\subdir" with the files:
;--FILE: dir\def-one.rkt
#lang racket/base
(provide (all-defined-out))
(define (one) 1
#;(define (one) 1) ;duplicated

;--FILE: dir\subsir\one.rkt
#lang racket/base
(require "../def-one.rkt")
(one)

2) Add a "compile.ss" files to each directory
;--FILE: dir\compile.ss
#lang racket/base
(require compiler/compiler)
(require setup/getinfo)
(compile-directory-zos (current-directory)
                       (get-info/full (current-directory)))

;--FILE: dir\subdir\compile.ss
#lang racket/base
(require compiler/compiler)
(require setup/getinfo)
(compile-directory-zos (current-directory)
                       (get-info/full (current-directory)))

3) Run the "dir\compile.ss" to compile and create the .zo files

4) Edit the file "dir\def-one.rkt". Remove the #; so the definition of
"one" is duplicated, and save the file.

5) Run the other "dir\subdir\compile.ss" to compile and create the .zo
files only in the subdir.

6) Get the ERROR: exception raised by error display handler:
normalize-path: #<path:C:/var> (within the input path) is not a
directory or does not exist; original exception raised: module:
duplicate definition for identifier

To repeat:

+7) Edit "dir\def-one.rkt" to make it a valid file. Add again the #; and save

+8) Run "dir\compile.ss" to compile everithing.

+9) Edit "dir\def-one.rkt" to make it a invalid. Remove the #; or add
or remove a random ( or ).

+10) Run again "dir\subdir\compile.ss" to get the error.

> Re: [racket-dev] Is anybody else getting this error?
> Robby Findler
> Tue, 07 Feb 2012 11:11:59 -0800
>
> Do you get a stacktrace?
>
> Robby

> > On Tue, Feb 7, 2012 at 1:01 PM, Neil Toronto <neil.toro... at gmail.com> wrote:
> > This is from the latest release. On Redex errors and some Typed Racket
> > errors (so far), I get something like
> >
> > exception raised by error display handler: normalize-path:
> > #<path:/var/tmp/racket> (within the input path) is not a directory or does
> > not exist; original exception raised: reduction-relation: before underscore
> > must be either a non-terminal or a built-in pattern, found 1 in b_1
> >
> >
> > The problem isn't the Redex error I'm getting - I know how to fix that - but
> > that it's expecting a "/var/tmp/racket" directory to exist.
> >
> > Obviously I could create this directory, but I wanted to bring it up here
> > first. It appears that some collects are either making an assumption they
> > shouldn't be making, or they rely on a badly behaved function that creates
> > temporary files. (I've verified that `make-temporary-file' is working.)
> >
> > Neil
> > _________________________
> >  Racket Developers list:
> >  http://lists.racket-lang.org/dev

Posted on the dev mailing list.