strange error in GCL

16 views
Skip to first unread message

Qian Yun

unread,
Nov 11, 2023, 7:35:24 AM11/11/23
to fricas-devel
When I was testing FriCAS built with GCL today, I found a very
strange error:

The test suite shows one error in bugs2017.output:

fatal tests were:

1: EQUL: (latex(1), "1")

(This error is probably exposed by recent commit b8b1bd4f,
"Remove non-default implementations of 'latex'".)

This error can be reproduced in FriCAS, but not always --
you may need to repeat a few times to get the error:

(1) -> latex 1

>> System error:
Condition in FUNCALL [or a callee]: INTERNAL-SIMPLE-ERROR: Caught
fatal error [memory may be damaged]

With ")lisp (si::use-fast-links nil)" I can get following backtrace:

BOOT>>:bt

#0 DO-BREAK-LEVEL
{debug-level=#<conditions::internal-simple-error.0>,g10928=nil,*restart-conditio...}
[ihs=38]
#1 INVOKE-DEBUGGER
{loc0=#<conditions::internal-simple-error.0>,loc1=(((error .
#<compiled-function...} [ihs=36]
#2 TexFormat; {loc0=((|prolog| . #<vector 0000000000e2f390>) (|TeX| .
#<vector 0000000000e2f39...} [ihs=33]
#3 evalSlotDomain {u=(|TexFormat|),dollar=#<vector
0000000000e2e940>,loc2=t,loc3=(#<vector 0000000...} [ihs=32]
#4 lazyDomainSet {form=(|TexFormat|),thisdomain=#<vector
0000000000e2e940>,slot=9} [ihs=31]
#5 replaceGoGetSlot {env=(#<vector 0000000000e2e940> 5 . |coerce|)}
[ihs=30]
#6 SETCAT-;latex;SS;1 {loc0=1,loc1=#<vector 0000000000e2e940>,loc2=(1
(#<vector 0000000000e2e940> 5 . ...} [ihs=29]
#7 FUNCALL {loc0=#<compiled-function
|SETCAT-;latex;SS;1|>,loc1=1,loc2=#<vector 0000000000e...} [ihs=28]
#8 FUNCALL {loc0=#<compiled-function
|SETCAT-;latex;SS;1|>,loc1=1,loc2=#<vector 0000000000e...} [ihs=27]
#9 eval {x=nil,loc1=nil,loc2=nil,loc3=(let ((#0=#:g2 #)) (the (values
t) (funcall # 1 .....} [ihs=24]
#10 timedEvaluate {code=(spadcall 1 (quote (#<compiled-function
|SETCAT-;latex;SS;1|> . #<vector 0...} [ihs=23]
#11 timedEVALFUN {code=(spadcall 1 (quote (#<compiled-function
|SETCAT-;latex;SS;1|> . #<vector 0...} [ihs=22]
#12 evalFormMkValue {op=#<vector 00000000014688d0>,form=(spadcall 1
(quote (#<compiled-function |SET...} [ihs=21]
#13 evalForm {op=#<vector
00000000014688d0>,opname=|latex|,argl=(#<vector 0000000001468908>),...}
[ihs=20]
#14 bottomUpForm2 {t=(#<vector 00000000014688d0> #<vector
0000000001468908>),op=#<vector 000000000...} [ihs=19]
#15 bottomUpForm3 {t=(#<vector 00000000014688d0> #<vector
0000000001468908>),op=#<vector 000000000...} [ihs=18]
#16 bottomUpForm {t=(#<vector 00000000014688d0> #<vector
0000000001468908>),op=#<vector 000000000...} [ihs=17]
#17 bottomUp {t=(#<vector 00000000014688d0> #<vector
0000000001468908>)} [ihs=16]
#18 interpret1 {x=(|latex| 1),rootmode=nil,posnform=(|Application|
((|id| #) . |latex|) ((|inte...} [ihs=15]
#19 interpret {x=(|latex| 1),posnform=(|Application| ((|id| #) .
|latex|) ((|integer| #) . "1"...} [ihs=14]
#20 interpretTopLevel {x=(|latex| 1),posnform=(|Application| ((|id| #)
. |latex|) ((|integer| #) . "1"...} [ihs=13]
#21 processInteractive1 {form=(|latex| 1),posnform=(|Application|
((|id| #) . |latex|) ((|integer| #) . ...} [ihs=12]
#22 processInteractive {form=(|latex| 1),posnform=(|Application|
((|id| #) . |latex|) ((|integer| #) . ...} [ihs=11]
#23 intInterpretPform {pf=(|Application| ((|id| #) . |latex|)
((|integer| #) . "1")),loc1=|ptree|} [ihs=10]
#24 ncConversationPhase {fn=#<compiled-function
|phInterpret|>,args=(((|carrier| # # ...))),loc2=(|Appli...} [ihs=9]
#25 intloopSpadProcess,interp {cc=((|carrier| (|ok?| . t)
(|ptreePremacro| . #1=(|Application| # #)) ...)),ptr...} [ihs=8]
#26 intloopSpadProcess {stepno=1,lines=(((# . 1) . "latex
1")),ptree=(|Application| ((|id| #) . |latex|...} [ihs=7]
#27 intloopProcess {n=1,interactive=t,s=(((#) (|Application| # #))
|nonnullstream| #<compiled-funct...} [ihs=6]
#28 intloopProcessStrings {s=("latex 1"),n=1} [ihs=5]
#29 intloopReadConsole {b=nil,n=1} [ihs=4]
#30 SpadInterpretStream
{step_num=1,source=nil,interactive?=t,loc3=nil,loc4=nil,loc5=nil,loc6=nil,loc7=n...}
[ihs=3]
NIL

- Qian

Waldek Hebisch

unread,
Nov 11, 2023, 9:26:08 AM11/11/23
to fricas...@googlegroups.com
On Sat, Nov 11, 2023 at 08:35:19PM +0800, Qian Yun wrote:
> When I was testing FriCAS built with GCL today, I found a very
> strange error:
>
> The test suite shows one error in bugs2017.output:
>
> fatal tests were:
>
> 1: EQUL: (latex(1), "1")
>
> (This error is probably exposed by recent commit b8b1bd4f,
> "Remove non-default implementations of 'latex'".)

Well, IME unrelated changes can trigger bugs in FriCAS compiled
by GCL.
Thanks for info. I can not reproduce this failure. replaceGoGetSlot
should be called only in first invocation, if failure appears on
later invocation call should use cached result of lookup from
domain vector and go directly to appropriate function in
TexFormat. Above it seems that initialization of TexFormat
failed...

OTOH I do not have 100% confidence in GCL backtrace. Debugging
misterious problem in the past, backtrace suggested a failure
point. But debugging printouts indicated that execution
made more progress.

--
Waldek Hebisch
Reply all
Reply to author
Forward
0 new messages