[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gcl-devel] Re: two strangenesses

From: Camm Maguire
Subject: [Gcl-devel] Re: two strangenesses
Date: 16 Nov 2006 12:53:11 -0500
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings, and thanks!

Robert Boyer <address@hidden> writes:

> Thanks.  Although a build of the most recent (half hour ago) 2.7.0 now
> completes, it gives rise to a strange error during the build, repeated
> below.
> It is possible that that build error gives rise to the strange behavior
> of the newly built image on a simple error. "error in error".
> Thanks!
> Bob
> -------------------------------------------------------------------------------
> During a the build:
> ;; Loading sys-package.lisp
> Correctable error: PACKAGE-ERROR :PACKAGE #<"DEFPACKAGE" package> 
> :FORMAT-CONTROL "Name conflict on importing Error in error: 
> Top level.
> >
> >

OK this should be fixed now -- thanks!

> ;; Loading defsys.lisp
> ;; Finished loading defsys.lisp
> -------------------------------------------------------------------------------
> Simple error in running that build:
> GCL (GNU Common Lisp)  2.7.0 ANSI    Nov 16 2006 06:20:05
> Source License: LGPL(gcl,gmp,pargcl), GPL(unexec,bfd,xgcl)
> Binary License:  GPL due to GPL'ed components: (BFD UNEXEC)
> Modifications of this banner must retain notice of a compatible license
> Dedicated to the memory of W. Schelter
> Use (help) to get some basic information on how to use GCL.
> Temporary directory for compiler files set to /tmp/
> >(car 3)
> Error: 
> Fast links are on: do (si::use-fast-links nil) for debugging
> Signalled by CAR.
> Condition in CAR [or a callee]: INTERNAL-SIMPLE-TYPE-ERROR: 3 is not of type 
> LIST: 
> Broken at CAR.  Type :H for Help.Error in error: 
>                                FORMAT-CONTROL
>                                You may not supply additional arguments ~
>                                    when giving ~S to ~S.
>                                FORMAT-ARGUMENTS
>                                (Condition in SYSTEM:UNIVERSAL-ERROR-HANDLER 
> [or a callee]: INTERNAL-SIMPLE-PROGRAM-ERROR: Invalid initialization argument 
>                                 UNIVERSAL-ERROR-HANDLER))
> Backtrace: system:universal-error-handler > MAKE-CONDITION

OK, I think I fixed this too -- thanks!

At some point I'd like to discuss the philisophy/idea behind the new
stuff and make sure that it is OK.  The general idea is to process
errors normally, any errors within error with a simple backtrace
followed by a throw up to the latest good level, and any critical
condition by an emergency system function reset and a throw back up to
top level.

One problem that probably needs attention -- I've put in floating
point overflow errors to fix some ansi issues, but the compiler uses
inf arithmetic to probe the bounds of functions when propagating
types.  We probably need a mechanism like handler-bind to skip over
these at the right moments, but handler-bind is not available in the
basic image.

There is a somewhat serious bootstraping issue to get all this
together.  errors depend on restarts which depend on CLOS/classes
which depend on basic error handling, etc. I'm trying to have just one
definition of functions lying around to avoid going crazy.  For simple
functions like error, we define them in terms of 'proto dummy
functions and macros, and then when all the tools are ready, do

(defconstant +protos+ (mapcar (lambda (x) (cons (intern (concatenate 'string 
"PROTO-" (string x))) x))
                              '(with-simple-restart show-restarts continue 

(defmacro with-protos (&body forms)
`(let ((*proto-debug-level* *debug-level*))
   ,@(nsublis +protos+ forms)))

(defun error (d &rest a)
    (apply #.(function-src 'error) d a)))

using our new function-source-in-core facility.  

What I cannot yet do is handle in similar fashion the macros, assert,
check-type, etc.  Somehow these need to be defined consitently in the
beginning (gcl_assert.lsp) and then upgraded in place once restarts
become available instead of redefined (gcl_clcs_macros.lisp,
gcl_clcs_install.lisp).  Of course, even if we can reuse the original
definition, compiled functions using these macros before clcs is
available will not have restarts compiled in.

Take care,

> Top level.
> >

Camm Maguire                                            address@hidden
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]