From: Hoehle, Joerg-C. <Joe...@t-...> - 2002-04-05 11:11:11
|
Hi, CLISP's external modules are initialized very early while starting up. For instance, o init_streamvars() has not yet been called (setting *TERMINAL-IO* = etc.) o init_packages() has not yet been called when starting without -M o and many others as well... CLISP catches the attempt by modules to define Lisp functions (e.g. LISPFUN) in an unknown package (spvw.d:init_other_modules): { var object pack =3D = find_package(asciz_to_string(packname,O(internal_encoding))); if (nullp(pack)) # Package nicht gefunden? { asciz_out_ss(GETTEXTL("module `%s' requires package %s." = NLstring), module->name, packname); -> "module `mtest' requires package TESTCI." But it cannot do so for arbitrary objects, e.g. the symbol TESTCI::DECIDER that Peter Wood tries to use. It attempts to read them via a string-input-stream, so a package error is signaled. As init_streamvars() has not yet been called, a suberror follows about *TERMINAL-IO*. Why it crashes later on I don't know - it should not. It's not just a package problem. Any error signaled while reading the object_tab to initialize an object causes CLISP to die. I don't know why in the LISPFUN case an error is signaled instead of just creating a virgin package. Maybe because CLISP was not initialized far enough, maybe because that would have disturbed later FIND-PACKAGE checks in Lisp code. I don't know why init_other_modules_2() (esp. stream_read) etc. are called that early in the process. There may be excellent reasons for all these. Only Bruno Haible could = tell. I don't know what to do yet. Regards, J=F6rg H=F6hle. |