login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Edit detail for #77 protected-symbol-warn called with (NIL) revision 3 of 3

1 2 3
Editor: kratt6
Time: 2007/12/28 15:28:04 GMT-8
Note:

added:

From kratt6 Fri Dec 28 15:28:04 -0800 2007
From: kratt6
Date: Fri, 28 Dec 2007 15:28:04 -0800
Subject: 
Message-ID: <20071228152804-0800@axiom-wiki.newsynthesis.org>

Status: pending (next release) => rejected 


Submitted by : (unknown) at: 2007-11-17T23:02:11-08:00 (16 years ago)
Name :
Axiom Version :
Category : Severity : Status :
Optional subject :  
Optional comment :



------------------------------------------------------------


(new) protected-symbol-warn called with (NIL) --Page, Bill, Tue, 25 Jan 2005 10:25:24 -0600



-----Original Message-----
From: Mike Dewar [mailto:miked@nag.co.uk]
Sent: Tuesday, January 25, 2005 10:05 AM
To: Bill Page (E-mail)
Cc: 'daly@axiom-developer.org'; axiom-developer@nongnu.org
Subject: Re: [Axiom-developer] RE: bugs@axiom-developer.org


Hi Bill,

> That reminds me to ask: What is the origin of the message
> 
>    protected-symbol-warn called with (NIL)
> 
> that appears on every error output from Axiom? This looks
> like some kind of lisp error to me. Is this supposed to be
> there?

This is a relic of CCL.  In CCL most functions are compiled to byte
codes which are interpreted at runtime.  However Arthur Norman created a
very nice facility for Axiom which allowed us selectively to compile
functions to C so that they could be linked into the CCL kernel, which
gave quite a welcome performance boost.  Since those functions still
existed in the (byte-code) libraries the kernel versions  had to be
flagged as "protected symbols" so that they did not get over-written
when the libraries were loaded.   We did quite a lot of benchmarking and
included quite a broad selection of ex-spad code in the kernel which we
shipped.

The only downside to this was that some Axiom users quite liked to
re-compile "official" library code.  So we added a facility to warn
users when a kernel function was overwritten, and allow them to force a
redefinition (")set kernel warn" and ")set kernel protect" are the
relevent incantations IIRC).  

Quite why this message appears every time you get an error is beyond me,
although it may be due to the interaction between the break-loop support
we added for the CCL implementation, and GCL's own debugging facilities.

Cheers, Mike.




property change --Bill Page, Tue, 25 Jan 2005 10:26:52 -0600

Category:  => Axiom Interpreter 
Severity:  => normal 
Status:  => open 




nocompil.lisp.pamphlet --Bill Page, Tue, 25 Jan 2005 11:07:17 -0600

says::

  The function **protected-symbol-warn** was added because it is
  used in **setvart.boot** but apparently is nowhere defined. It
  is probably primitive to **CCL**.

  The function **protect-symbols** was added because it is
  used in **setvart.boot** but apparently is nowhere defined. It
  is probably primitive to **CCL**

However the calls in **setvart.boot** cannot produce the message
**protected-symbol-warn** because they have been commented-out.

&lt;&lt;gcl-cmpnote&gt;&gt;::

  (in-package "BOOT")
  (defun protected-symbol-warn (&rest arg))
  ;  (format t "protected-symbol-warn called with ~A~%" arg))
  (defun protect-symbols (&rest arg))
  ;  (format t "protected-symbol-warn called with ~A~%" arg))

  ...

  (defun enable-backtrace (&rest arg)
    (format t "protected-symbol-warn called with ~A~%" arg))

-----

Perhaps enable-backtrace is what issues the message.
What is this really supposed to do? In the case of CCL
it seems to be called from **debug.lisp.pamphlet** ::

  A "resumable" break loop for use in trace etc. Unfortunately this
  only works for CCL. We need to define a Common Lisp version. For
  now the function is defined but does nothing.
  <<interrupt>>=
  #-:CCL
  (defun interrupt (&rest ignore))

  #+:CCL
  (defun interrupt (&rest ignore)
    (prog (prompt ifile ofile u v)
      (setq ifile (rds *debug-io*))
      (setq ofile (wrs *debug-io*))
      (setq prompt (setpchar "Break loop (:? for help)> ")) top (setq u (read))
      (cond
        ((equal u ':x) (go exit))
        ((equal u ':r) (go resume))
        ((equal u ':q)
          (progn (lisp::enable-backtrace nil)
  ...

This is the only place I can find that would call a function
that prints this error message. Could the conditional be
somehow ignored?

It's a mystery.

Also, at least on the Windows version of Axiom::

  )set kernel protect on

and::

  )set kernel warn on

seem to be non-functional, i.e.::

  )set kernel

still shows both in the 'off' state.



#+:ccl protected-symbol-warn msg --Tim Daly, Sun, 13 Feb 2005 12:32:49 -0600

Status: open => pending (next release) 




property change --Tue, 08 Mar 2005 07:18:58 -0600





property change --Fri, 18 Mar 2005 14:23:53 -0600

Status: pending (next release) => closed 




$# --unknown, Thu, 14 Sep 2006 09:19:39 -0500

Category: Axiom Interpreter => Aldor Standalone Compiler 
Severity: normal => wishlist 
Status: closed => pending (next release) 




... --kratt6, Fri, 28 Dec 2007 15:15:07 -0800

Category: Aldor Standalone Compiler => Axiom Aldor Interface 




... --kratt6, Fri, 28 Dec 2007 15:28:04 -0800

Status: pending (next release) => rejected