gcl-devel
[Top][All Lists]
Advanced

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

Re: Recommended version


From: Waldek Hebisch
Subject: Re: Recommended version
Date: Sun, 14 Mar 2021 20:43:23 +0100
User-agent: Mutt/1.10.1 (2018-07-13)

On Sat, Mar 13, 2021 at 09:01:46AM -0500, Camm Maguire wrote:
> Greetings!  And thank you for your work on fricas!
> 
> I do intend shortly to remedy the staleness of the official release
> tarballs.  I would be interested in bug reports against 2.6.12 if you
> have time.

ATM I do not know if this FriCAS or gcl problem.  There are failures
("System error") in 'ncalg.input' test file.  I tracked error to
specific place on FriCAS side, namely FriCAS uses 'SPADCALL'
macro to perform Spad function calls.  'SPADCALL' is question
is supposed to transfer control to 'newGoGet' function.
I inserted printouts which indicate that control gets to
'SPADCALL' macro, but I get no printout from 'newGoGet'.
Puzzling thing is that 'SPADCALL' is used quite a lot, why
this particular 'SPADCALL' fails.  Also, when compiled
with

(proclaim '(optimize (speed 0) (safety 3)))

code works OK.  From backtrace I get:

#3   APPLY {loc0=#<compiled-function 
system:universal-error-handler>,loc1=error,loc2=nil,lo...} [ihs=31]
#4   LAMBDA {:format-control="bad args",} [ihs=28]
#5   FDALG;^;$I$;160 {f=#<vector 0000000001119c40>,n=-1,$=#<vector 
0000000001118010>,loc3=4,loc4=4,lo...} [ihs=27]
#6   FUNCALL {loc0=#<compiled-function |FDALG;^;$I$;160|>,loc1=#<vector 
0000000001119c40>,loc...} [ihs=26]

However printouts indicate that error is in 'SPADCALL' in function
'|FDALG;refinementEquations;$3Nni2BL;163|' which is several calls
deeper than '|FDALG;^;$I$;160|'.  Relevant part around 'SPADCALL'
is:

                    (PRETTYPRINT (CAR (QREFELT $ 286)))
                    (PRETTYPRINT (CDR (CDR (QREFELT $ 286))))
                    (LETT |lst_eqn|
                          (SPADCALL |pen_arg| |row_P| |col_P| |row_Q|
                              |col_Q| |rdst| |cdst| |rex1| |cex1|
                              |rex2| |cex2| (QREFELT $ 286)))
                    (PRETTYPRINT "eliminationEquations done")

'PRETTYPRINT' is prinout helper, I inserted print form by hand into
Lisp code.  'SPADCALL' is defined as:

(defmacro SPADCALL (&rest L)
  (let ((args (butlast l))
        (fn (car (last l)))
        (gi (gensym)))
     ;; (values t) indicates a single return value
    `(let ((,gi ,fn))
       (the (values t)
         (funcall
          (the function (car ,gi))
          ,@args
          (cdr ,gi))))))

Printouts above was to verify that SPADCALL got correct function,
a they gave:

#<compiled-function |newGoGet|>
(862 . |eliminationEquations|)

which is correct.  I also tries printing other arguments and
they look OK.  I tried a toy test file which performs similar
operations to the failing ones, but it works.

> The production version of GCL is essentially Version_2_6_13pre in git.
> Master is more experimental and not yet recommended for prime time.
> 
> git clone git://git.sv.gnu.org/gcl
> cd gcl
> git checkout Version_2_6_13pre

Yes, thanks to message from Matt I fetched it.  Seems there
are significant changes...

> If you have reports of source builds differing from released binaries I
> would be most interested.

I do not know if this affects newer versions, but several years
ago I observed that previously working gcl failed to work after
glibc upgrade (upgrade was supposed to be compatible and AFAICS
all other binaries worked fine).  IIRC this was not the only such
case, but after I adapted policy of regulary recompiling gcl
and that apparently eliminated significant source of misterious
problems.

-- 
                              Waldek Hebisch



reply via email to

[Prev in Thread] Current Thread [Next in Thread]