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

Bug in Victoria Day PCL (Lucid 3.0), using eql specializers



There is a bug in pcl on lucid 3.0 when using eql specializers. This bug
makes it
impossible to compile clue, and can be demonstrated as follows:

The file bug.lisp:

	(in-package 'pcl)
	(defclass foo () ())
	(defmethod bug ((object foo) (tag (eql 'hej)) arg)
	  (format t "~&~s!" arg))

The result when trying to compile it:

> (pcl::bug-report-info)
PCL system date: 5/22/89  Victoria Day PCL
Lisp Implementation type: Domain/CommonLISP
Lisp Implementation version: Domain/CommonLISP, Development Environment
Version 3.00, 10 March 1989
*features*: (:CLOS :XLIB :PORTABLE-COMMONLOOPS :PCL :MULTITASKING :LCL3.0
:EGC :FLAVORS :COMPILER :LOOP :IEEE-FLOATING-POINT :MC68000 :APOLLO
:DOMAIN/OS :AEGIS :UNIX :LUCID :COMMON-LISP)
NIL
> (compile-file "bug.lisp")
;; You are using the compiler in development mode (compilation-speed = 3)
;;; Generation of full safety checking code is enabled (safety = 3)
;;; Optimization of tail calls is disabled (speed = 2)
;;; Reading source file "bug.lisp"
>>Trap: Main Stack Overflow

        The main Lisp stack has overflowed.  If you use more than 32K bytes
        of stack space in this error break or by continuing the
computation,
        an automatic return to Lisp Top Level will be forced.

LUCID:%ZERO-REGION:
:C  0: Resume Interrupted Instruction
:A  1: Abort to Lisp Top Level

-> :b 50
LUCID:%ZERO-REGION <- SYSTEM:GC-INTERNAL <- (:INTERNAL
COMPUTE-PRECEDENCE-DAG-PASS-1 BUILD-1) <- (:INTERNAL
COMPUTE-PRECEDENCE-DAG-PASS-1 BUILD) <- COMPUTE-PRECEDENCE-DAG-PASS-1 <-
COMPUTE-PRECEDENCE-DAG-1 <- COMPUTE-PRECEDENCE-DAG <-
COMPUTE-ONE-COLUMN-INTERNAL <- COMPUTE-ONE-COLUMN <- COMPUTE-COLUMNS <-
COMPUTE-COMBINATION-POINTS <- COMPUTE-COMBINED-METHODS <-
NOTICE-METHODS-CHANGE-1 <- NOTICE-METHODS-CHANGE-2 <- MAKE-INSTANCE <-
(:INTERNAL COMPUTE-COLUMN-SPECIALIZERS GET-EQL-CLASS) <-
COMPUTE-COLUMN-SPECIALIZERS <- COMPUTE-COMBINATION-POINTS <-
COMPUTE-COMBINED-METHODS <- NOTICE-METHODS-CHANGE-1 <-
NOTICE-METHODS-CHANGE <- |(METHOD INVALIDATE-GENERIC-FUNCTION
(STANDARD-GENERIC-FUNCTION))| <- INVALIDATE-GENERIC-FUNCTION <- (:INTERNAL
|(METHOD UPDATE-METHOD-INHERITANCE (STANDARD-CLASS T T))| RESET-GFS) <-
|(METHOD UPDATE-METHOD-INHERITANCE (STANDARD-CLASS T T))| <-
UPDATE-METHOD-INHERITANCE <- |(METHOD PROPAGATE-CLASS-UPDATE
(STANDARD-CLASS T T T))| <- PROPAGATE-CLASS-UPDATE <- |(METHOD UPDATE-CLASS
(STANDA

RD-CLASS))| <- UPDATE-CLASS <- (:INTERNAL COMPUTE-COLUMN-SPECIALIZERS
GET-EQL-CLASS) <- COMPUTE-COLUMN-SPECIALIZERS <- COMPUTE-COMBINATION-POINTS
<- COMPUTE-COMBINED-METHODS <- NOTICE-METHODS-CHANGE-1 <-
NOTICE-METHODS-CHANGE <- |(METHOD INVALIDATE-GENERIC-FUNCTION
(STANDARD-GENERIC-FUNCTION))| <- INVALIDATE-GENERIC-FUNCTION <- (:INTERNAL
|(METHOD UPDATE-METHOD-INHERITANCE (STANDARD-CLASS T T))| RESET-GFS) <-
|(METHOD UPDATE-METHOD-INHERITANCE (STANDARD-CLASS T T))| <-
UPDATE-METHOD-INHERITANCE <- |(METHOD PROPAGATE-CLASS-UPDATE
(STANDARD-CLASS T T T))| <- PROPAGATE-CLASS-UPDATE <- |(METHOD UPDATE-CLASS
(STANDARD-CLASS))| <- UPDATE-CLASS <- (:INTERNAL
COMPUTE-COLUMN-SPECIALIZERS GET-EQL-CLASS) <- COMPUTE-COLUMN-SPECIALIZERS
<- COMPUTE-COMBINATION-POINTS <- COMPUTE-COMBINED-METHODS <-
NOTICE-METHODS-CHANGE-1
->