Menu

#38 ASDF enters endless loop loading .asd

open
asdf (12)
5
2004-09-14
2004-09-14
No

Hi,

I'm using ASDF 1.86.1 on MS-Windows and Linux, running
the same version of CLISP (CLISP CVS Head as of
13.9.2004).

I obtain infinite loops trying to load various systems.
This appears to happen when I modify an .asd file after
it has been loaded.

[147]> (asdf::find-system"clsql-odbc")

;; Loading file S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd
...
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...

[145]> (asdf:oos 'asdf:load-op "clsql-odbc")

; loading system definition from
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd into #<PACKAGE
ASDF15694>
;; Loading file S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd
...
; registering #<SYSTEM CLSQL-ODBC #x1A6E5AB9> as
CLSQL-ODBC
; loading system definition from
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd into #<PACKAGE
ASDF15699>
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...
; loading system definition from
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd into #<PACKAGE
ASDF15700>
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...
; loading system definition from
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd into #<PACKAGE
ASDF15701>
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...
; loading system definition from
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd into #<PACKAGE
ASDF15702>
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...
; loading system definition from
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd into #<PACKAGE
ASDF15703>
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...
; loading system definition from
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd into #<PACKAGE
ASDF15704>
;; Loading file
S:\Code\Lisp\clsql-3.0.3\clsql-odbc.asd ...

The potential for circularity seems inside
find-system
-> load
-> defsystem
-> parse-component-form nil
-> find-component nil
-> find-system

BTW, I believe the defsystem macro expansion should
only refer to *load-truename* if it's bound. Does the
doc state that defsytem must not be used at top-level?
That would be quite unusual for Lisp.
I got errors about truenames with NIL when trying to
provide a REPL defsystem definition.

Regards,
Jörg Höhle

Discussion

  • Jörg Höhle

    Jörg Höhle - 2004-09-15

    Logged In: YES
    user_id=377168

    Well, I traced the problem down to a time shift between the
    MS-Windows box running Lisp and the Linux samba server
    providing the files that I also edited there.

    Nevertheless, time shifts are common, bad time stamps can
    happen and utilities such as ASDF (like make) should protect
    themselves against endless loops, as they ought to protect
    themselves against circular dependencies.

    Therefore I'll leave this bugtrack item open.

    Regards,
    Jrg Hhle

     
  • Joseph A. Oswald, III

    Logged In: YES
    user_id=24602

    I have also encountered this bug, also in a case where there
    is clock skew between file-write-date (based on an NFS
    server's clock) and (get-universal-time) (based on the local
    machine's clock). The file server was about 14 minutes ahead
    of the local machine.

     

Log in to post a comment.