Raymond Toy <[EMAIL PROTECTED]> writes:
> My ESP is not working today. In what way is it not working? Plus
> Helmut's suggestion about loading the lib in a separate file before
> loading your definitions is a good idea. (Something was broken, I
> think, when linkage-tables were incorporated.)
>
> Ray
Here is part of a followup conversation between me and Ray (by accident I
had typed r instead of f in Gnus). It should be on the list, I (we) think.
Yours, Nicolas.
P.S.: I just noted that (for me) CMUCL also hangs after the backtrace.
---------------------------------------------------------------------------
---------------------------------------------------------------------------
>From my message:
---------------------------------------------------------------------------
---------------------------------------------------------------------------
* (compile-file "superlu.lisp")
; Python version 1.1, VM version Intel x86 on 10 NOV 04 05:14:11 pm.
; Compiling: /home/neuss/Programming/lisp/superlu.lisp 10 NOV 04 05:14:04 pm
; Byte Compiling Top-Level Form:
; Converted SET-DEFAULT-OPTIONS.
; Compiling DEF-ALIEN-ROUTINE "set_default_options":
Error in function ALIEN::%SET-AUXILIARY-ALIEN-TYPE:
Attempt to multiple define ENUM YES_NO_T.
[Condition of type SIMPLE-ERROR]
Restarts:
0: [ABORT] Return to Top-Level.
Debug (type H for help)
(ALIEN::%SET-AUXILIARY-ALIEN-TYPE :ENUM
YES_NO_T
#<ALIEN::ALIEN-ENUM-TYPE
(ENUM YES_NO_T :NO :YES)>)
Source: (ERROR "Attempt to multiple define ~A ~S." KIND NAME)
0] back
0: (ALIEN::%SET-AUXILIARY-ALIEN-TYPE :ENUM
YES_NO_T
#<ALIEN::ALIEN-ENUM-TYPE
(ENUM YES_NO_T :NO :YES)>)
1: (ALIEN::ALIEN-ENUM-TYPE-TRANSLATOR (ENUM YES_NO_T :NO :YES))
2: (ALIEN::PARSE-ALIEN-RECORD-FIELDS
#<ALIEN::ALIEN-RECORD-TYPE (STRUCT SUPERLU_OPTIONS_T)>
((FACT #) (EQUIL #) (COLPERM #) (TRANS #) (ITERREFINE #) (PRINTSTAT #)
(SYMMETRICMODE #) (DIAGPIVOTTHRESH DOUBLE-FLOAT) (PIVOTGROWTH #)
(CONDITIONNUMBER #) (ROWPERM #) (REPLACETINYPIVOT #) (SOLVEINITIALIZED #)
(REFINEINITIALIZED #)))
3: (ALIEN::PARSE-ALIEN-RECORD-TYPE :STRUCT
SUPERLU_OPTIONS_T
((FACT #) (EQUIL #) (COLPERM #) (TRANS #)
(ITERREFINE #) (PRINTSTAT #)
(SYMMETRICMODE #)
(DIAGPIVOTTHRESH DOUBLE-FLOAT)
(PIVOTGROWTH #) (CONDITIONNUMBER #)
(ROWPERM #) (REPLACETINYPIVOT #)
(SOLVEINITIALIZED #) (REFINEINITIALIZED #)))
4: (ALIEN::ALIEN-*-TYPE-TRANSLATOR
(* (STRUCT SUPERLU_OPTIONS_T # # # # # # # # # # # # # #)))
5: (ALIEN::PARSE-ALIEN-TYPE
(* (STRUCT SUPERLU_OPTIONS_T # # # # # # # # # # # # # #)))
6: ("EMIT-COLD-LOAD-DEFUNS \"TYPE\"" (ALIEN (* #)))
7: (KERNEL:VALUES-SPECIFIER-TYPE (ALIEN (* #)))
8: (KERNEL:SPECIFIER-TYPE (ALIEN (* #)))
9: ("EMIT-COLD-LOAD-DEFUNS \"TYPE\"" (OR NULL SYSTEM-AREA-POINTER (ALIEN #)))
10: (KERNEL:VALUES-SPECIFIER-TYPE (OR NULL SYSTEM-AREA-POINTER (ALIEN #)))
11: (KERNEL:SPECIFIER-TYPE (OR NULL SYSTEM-AREA-POINTER (ALIEN #)))
12: (C::SOURCE-TRANSFORM-TYPEP (TYPEP #:G42 '(OR NULL SYSTEM-AREA-POINTER #)))
13: (C::IR1-CONVERT-SRCTRAN #<Continuation c1> #<Continuation c2>
#<C::GLOBAL-VAR #x5897D345
NAME= TYPEP
TYPE= #<FUNCTION-TYPE (FUNCTION # #)>
WHERE-FROM= :DECLARED
KIND= :GLOBAL-FUNCTION>
(TYPEP #:G42 '(OR NULL SYSTEM-AREA-POINTER #)))
14: (C::IR1-CONVERT #<Continuation c1>
#<Continuation c2>
(TYPEP #:G42 '(OR NULL SYSTEM-AREA-POINTER #)))
...
30: (C::IR1-CONVERT #<Continuation c6>
#<Continuation c7>
(LET (#)
(UNLESS # #)
(VALUES #:G42)))
0]
---------------------------------------------------------------------------
superlu.lisp:
(def-alien-type yes_no_t (enum yes_no_t :NO :YES))
(def-alien-type fact_t (enum fact_t :DOFACT :SamePattern
:SamePattern_SameRowPerm :FACTORED))
(def-alien-type rowperm_t (enum rowperm_t :NOROWPERM :LargeDiag :MY_PERMR))
(def-alien-type colperm_t (enum :NATURAL :MMD_ATA :MMD_AT_PLUS_A :COLAMD
:MY_PERMC))
(def-alien-type trans_t (enum trans_t :NOTRANS :TRANS :CONJ))
(def-alien-type DiagScale_t (enum DiagScale_t :NOEQUIL :ROW :COL :BOTH))
(def-alien-type IterRefine_t (enum IterRefine_t :NOREFINE :SINGLE=1 :DOUBLE
:EXTRA))
(def-alien-type MemType (enum MemType :LUSUP :UCOL :LSUB :USUB))
(def-alien-type stack_end_t (enum stack_end_t :HEAD :TAIL))
(def-alien-type LU_space_t (enum LU_space_t :SYSTEM :USER))
(def-alien-type nil
(struct superlu_options_t
(Fact fact_t)
(Equil yes_no_t)
(ColPerm colperm_t)
(Trans trans_t)
(IterRefine IterRefine_t)
(PrintStat yes_no_t)
(SymmetricMode yes_no_t)
(DiagPivotThresh double)
(PivotGrowth yes_no_t)
(ConditionNumber yes_no_t)
(RowPerm rowperm_t)
(ReplaceTinyPivot yes_no_t)
(SolveInitialized yes_no_t)
(RefineInitialized yes_no_t)
))
(def-alien-routine "set_default_options" void
(options (* (struct superlu_options_t))))
(with-alien ((options (struct superlu_options_t)))
(set-default-options (addr options)))
---------------------------------------------------------------------------
---------------------------------------------------------------------------
>From Ray's answer:
---------------------------------------------------------------------------
---------------------------------------------------------------------------
I can reproduce this, even though I don't have the superlu lib.
Unfortunately, I don't understand why enum yes_no_t is being multiply
defined.
More investigation needed.
Ray
---------------------------------------------------------------------------
---------------------------------------------------------------------------