On Sun, Jun 14, 2009 at 9:33 AM, Elliott Slaughter <elliottslaughter@gmail.com> wrote:
On Sun, Jun 14, 2009 at 10:29 AM, Luís Oliveira <luismbo@gmail.com> wrote:
On Fri, Jun 12, 2009 at 9:24 PM, Elliott
Slaughter<elliottslaughter@gmail.com> wrote:

> Of course, with :dont-save t, the user then has to call use-foreign-library
> again when starting up from the saved image, but I find this preferable to
> the crash I receive otherwise.

IIRC, you can close the foreign libraries before saving an image and
reload them manually afterwards. Would that be an acceptable
work-around?

Let me see if it works; I'll get back to you after I've tried it.

I'm believe I'm seeing this issue again, but none of my previous workarounds seem to be working. I am using SBCL 1.0.29 on Windows XP, and when I save and run an executable, I keep getting undefined alien errors. I have tried both the :dont-save t hack that I initially suggested, and have tried calling (close-foreign-library ...) on all of the open libraries before saving the executable, and nothing helps.

Can you suggest a course of action?

Thanks.

Here is the backtrace from when I try to run the executable:

This is experimental prerelease support for the Windows platform: use
at your own risk.  "Your Kitten of Death awaits!"

debugger invoked on a UNDEFINED-ALIEN-ERROR:
  Undefined alien: "SDL_Linked_Version"

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

(no restarts: If you didn't do this on purpose, please report it as a bug.)

(SB-SYS:ENSURE-DYNAMIC-FOREIGN-SYMBOL-ADDRESS
 "SDL_Linked_Version"
 #<unused argument>)
0]
WARNING: Starting a select without a timeout while interrupts are disabled.
ba
0: (SB-SYS:ENSURE-DYNAMIC-FOREIGN-SYMBOL-ADDRESS
    "SDL_Linked_Version"
    #<unused argument>)
1: ((FLET SB-THREAD::WITH-RECURSIVE-SYSTEM-SPINLOCK-THUNK))
2: ((FLET #:WITHOUT-INTERRUPTS-BODY-[CALL-WITH-RECURSIVE-SYSTEM-SPINLOCK]196))
3: (SB-THREAD::CALL-WITH-RECURSIVE-SYSTEM-SPINLOCK
    #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-SYSTEM-SPINLOCK-THUNK) {22FCDD}>
    #<unavailable argument>)
4: (SB-SYS:UPDATE-LINKAGE-TABLE)
5: (SB-IMPL::FOREIGN-REINIT)
6: (SB-IMPL::REINIT)
7: ((LABELS SB-IMPL::RESTART-LISP))
8: ("foreign function: #x4120C4")
9: ("foreign function: #x40AF88")

--
Elliott Slaughter

"Don't worry about what anybody else is going to do. The best way to predict the future is to invent it." - Alan Kay