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

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





Reply via email to