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