Sam Steingold | 10 Aug 19:36 2010
Picon

Re: status.text & clisp

Hi Liam,

On 8/7/10, Liam Healy <lhealy <at> common-lisp.net> wrote:
>  On Wed, Jul 28, 2010 at 3:04 PM, Sam Steingold <sds <at> gnu.org> wrote:
>  > I don't know what "execution errors" are (probably things like
>  > FUNCALL: undefined function NIL
>
> Yes, stuff like that.  I noticed similar errors when I
>  last tested on CLISP.  At some point I'll try a new
>  CLISP build and see if it's possible to knock these
>  down a bit.  I recommend the following technique for
>  debugging when you see e.g. test FOO failing,
>
>  (lisp-unit:use-debugger)  ; once only, will give you debugger on error
>  (lisp-unit:run-test foo)

    MATRIX-PRODUCT:
FUNCALL: undefined function NIL
    MATRIX-PRODUCT-HERMITIAN:
FUNCALL: undefined function NIL
    MATRIX-PRODUCT-NONSQUARE:
FUNCALL: undefined function NIL
    MATRIX-PRODUCT-TRIANGULAR:
FUNCALL: undefined function NIL
    MATRIX-SET-ALL:
FUNCALL: undefined function NIL
    SCALE:
FUNCALL: undefined function NIL
    TDIST:
FFI::FOREIGN-CALL-OUT: floating point overflow
(Continue reading)

Liam Healy | 11 Aug 04:28 2010
Picon

Re: status.text & clisp

Hi Sam,

Just focusing in on one class of errors, vector-set-all on
complex vectors:

On Tue, Aug 10, 2010 at 1:36 PM, Sam Steingold <sds <at> gnu.org> wrote:
> (symbol-plist (sys::closure-const (slot-value (nth 20
> (CLOS:GENERIC-FUNCTION-METHODS #'SET-ALL)) 'CLOS::$FAST-FUNCTION) 0))
> NIL
>
> i.e., the method FUNCALLs the property of the uninterned symbol which is NIL.

If I make a small modification to GSLL (attached) so that function
names like #:|gsl_vector_complex_float_set_all| are instead interned,
e.g.  '|gsl_vector_complex_float_set_all|,
then I get all tests to pass in my (old) version of CLISP:
 (lisp-unit:run-tests vector-set-all)
VECTOR-SET-ALL: 12 assertions passed, 0 failed.

Now it seems to me that what FSBV is doing with symbols (set/get
properties) should work equally well on uninterned or interned
symbols, so the original should work fine.  Is that correct?
Why does CLISP lose the property list binding when the symbol
is uninterned?

Liam
Attachment (gsll.diff): text/x-diff, 1146 bytes
_______________________________________________
(Continue reading)

Sam Steingold | 11 Aug 05:48 2010
Picon

Re: status.text & clisp

Hi Liam,

On 8/10/10, Liam Healy <lhealy <at> common-lisp.net> wrote:
>
>  On Tue, Aug 10, 2010 at 1:36 PM, Sam Steingold <sds <at> gnu.org> wrote:
>  > (symbol-plist (sys::closure-const (slot-value (nth 20
>  > (CLOS:GENERIC-FUNCTION-METHODS #'SET-ALL)) 'CLOS::$FAST-FUNCTION) 0))
>  > NIL
>  >
>  > i.e., the method FUNCALLs the property of the uninterned symbol which is NIL.
>
>
> If I make a small modification to GSLL (attached) so that function
>  names like #:|gsl_vector_complex_float_set_all| are instead interned,
>  e.g.  '|gsl_vector_complex_float_set_all|,
>  then I get all tests to pass in my (old) version of CLISP:
>   (lisp-unit:run-tests vector-set-all)
>  VECTOR-SET-ALL: 12 assertions passed, 0 failed.
>
>  Now it seems to me that what FSBV is doing with symbols (set/get
>  properties) should work equally well on uninterned or interned
>  symbols, so the original should work fine.  Is that correct?
>  Why does CLISP lose the property list binding when the symbol
>  is uninterned?

because it is not the same symbol. :-(
this is a very old bug:
https://sourceforge.net/tracker/?func=detail&aid=836838&group_id=1355&atid=101355
the workaround is to use `let' or `locally' instead of `progn',

(Continue reading)

Liam Healy | 12 Aug 03:17 2010
Picon

Re: status.text & clisp

On Tue, Aug 10, 2010 at 11:48 PM, Sam Steingold <sds <at> gnu.org> wrote:
> Hi Liam,
>
> On 8/10/10, Liam Healy <lhealy <at> common-lisp.net> wrote:
>>
>>  On Tue, Aug 10, 2010 at 1:36 PM, Sam Steingold <sds <at> gnu.org> wrote:
>>  > (symbol-plist (sys::closure-const (slot-value (nth 20
>>  > (CLOS:GENERIC-FUNCTION-METHODS #'SET-ALL)) 'CLOS::$FAST-FUNCTION) 0))
>>  > NIL
>>  >
>>  > i.e., the method FUNCALLs the property of the uninterned symbol which is NIL.
>>
>>
>> If I make a small modification to GSLL (attached) so that function
>>  names like #:|gsl_vector_complex_float_set_all| are instead interned,
>>  e.g.  '|gsl_vector_complex_float_set_all|,
>>  then I get all tests to pass in my (old) version of CLISP:
>>   (lisp-unit:run-tests vector-set-all)
>>  VECTOR-SET-ALL: 12 assertions passed, 0 failed.
>>
>>  Now it seems to me that what FSBV is doing with symbols (set/get
>>  properties) should work equally well on uninterned or interned
>>  symbols, so the original should work fine.  Is that correct?
>>  Why does CLISP lose the property list binding when the symbol
>>  is uninterned?
>
> because it is not the same symbol. :-(
> this is a very old bug:
> https://sourceforge.net/tracker/?func=detail&aid=836838&group_id=1355&atid=101355
> the workaround is to use `let' or `locally' instead of `progn',
(Continue reading)


Gmane