Re: save-application bug

Gary Byers <[email protected]> Fri, 2 Aug 2002 16:15:40 -0600 (MDT)
Newsgroups gmane.lisp.openmcl.bugs
Message-ID <[email protected]>
There's nothing in SAVE-APPLICATION that (intentionally) cares about
what the package is.  There's apparently a bug pretty deep in the guts
of SAVE-APPLICATION (more likely in the code that tries to "purify" the
image by copying code and the pnames of interned symbols to read-only
areas) that seems to foul things up, apparently depending on the state
of *PACKAGE*.

Note that (as of the last couple of versions), *PACKAGE* is set to the
CL-USER package when ppc-boot[.image] gets everything loaded, so the
initial call to SAVE-APPLICATION is typically made from a package other
than CCL.

I'm still trying to figure out what gets fouled up, but it seems more
likely that it has something to do with some attribute of the package
than with what package is current per se (something like "if the package
has internal symbols but doesn't have external symbols and it's a Friday,
the code that does purification accidentally clobbers some data structure.")

For what it's worth, I can provoke the bug under Darwin by:

? (in-package "ANSI-LOOP")  ; some random package
#<Package "ANSI-LOOP">
? (save-application "bad.image")

but doing the equivalent under LinuxPPC seems to work fine (and yields
an image that starts up in the ANSI-LOOP package ...)

On Fri, 2 Aug 2002, Hamilton Link wrote:

> I think somewhere in the docs it says you have to run save-application
> in the ccl package for it to work, but if you don't it should just print
> an error message and return, not die.
>
> ? (load "/Users/helink/work/defsystem-3.x/defsystem.lisp")
> ;Compiler warnings :
> ;   Unknown declaration (OPTIMIZE (INHIBIT-WARNINGS 3)), in
> OPERATE-ON-SYSTEM.
> ;   Variable *COMPILE-VERBOSE* not ignored, in OPERATE-ON-SYSTEM.
> ;Compiler warnings :
> ;   Unused lexical variable ARGUMENTS, in RUN-UNIX-PROGRAM.
> ;   Unused lexical variable PROGRAM, in RUN-UNIX-PROGRAM.
> #P"/Volumes/Data Disk/SVNDIR/defsystem-3.x/defsystem.lisp"
> ? (save-application "dppcl-ds.image")
> Fatal error: : save_application
>   - operating system error 14.
> %
>
> vs.
>
> ? (load "/Users/helink/work/defsystem-3.x/defsystem.lisp")
> ;Compiler warnings :
> ;   Unknown declaration (OPTIMIZE (INHIBIT-WARNINGS 3)), in
> OPERATE-ON-SYSTEM.
> ;   Variable *COMPILE-VERBOSE* not ignored, in OPERATE-ON-SYSTEM.
> ;Compiler warnings :
> ;   Unused lexical variable ARGUMENTS, in RUN-UNIX-PROGRAM.
> ;   Unused lexical variable PROGRAM, in RUN-UNIX-PROGRAM.
> #P"/Volumes/Data Disk/SVNDIR/defsystem-3.x/defsystem.lisp"
> ? (in-package :ccl)
> #<Package "CCL">
> ? (save-application "dppccl-ds.image")
> %
>
>
>
>