user@host:~/j9.5> LANG=C ./jconsole.sh 
  JVERSION 
Engine: j9.5.0-beta2/j64avx2/linux 
Build: commercial/2023-05-02T22:44:04/clang-11-0-0/SLEEF=1 
Library: 9.5.1 
Platform: Linux 64 
Installer: j9.5 install 
InstallPath: /home/user/j9.5 
Contact: www.jsoftware.com 
  load 'math/mt/mt-crash' 
JE has crashed, likely due to an internal bug.  Please report the code which 
caused the 
crash, as well as the following printout, to the J programming forum. 
0000000000403132: ?:0:  ? 
00007ffa9ace4cff: ?:0:  ? 
00007ffa965dd3aa: ?:0:  ? 
00007ffa965fad80: ?:0:  ? 
00007ffa9656d19f: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965ad206: ?:0:  ? 
00007ffa965f145d: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965ad206: ?:0:  ? 
00007ffa965f145d: ?:0:  ? 
00007ffa9655d038: ?:0:  ? 
00007ffa96575c02: ?:0:  ? 
00007ffa9657546e: ?:0:  ? 
00007ffa9655cda2: ?:0:  ? 
00007ffa965f145d: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965de27c: ?:0:  ? 
00007ffa965e3590: ?:0:  ? 
00007ffa967a4f15: ?:0:  ? 
00007ffa9657546e: ?:0:  ? 
00007ffa965f145d: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965ad206: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965ad206: ?:0:  ? 
00007ffa965f145d: ?:0:  ? 
00007ffa9655ce6b: ?:0:  ? 
00007ffa9659056f: ?:0:  ? 
00007ffa96575b1f: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965ad206: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965ad206: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965de27c: ?:0:  ? 
00007ffa965e3679: ?:0:  ? 
00007ffa967a372d: ?:0:  ? 
00007ffa967a3941: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965ad206: ?:0:  ? 
00007ffa9655ce6b: ?:0:  ? 
00007ffa965f0e44: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965ad206: ?:0:  ? 
00007ffa965f0e44: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965ad206: ?:0:  ? 
00007ffa965f0e44: ?:0:  ? 
00007ffa965dea22: ?:0:  ? 
00007ffa965de27c: ?:0:  ? 
00007ffa965e3679: ?:0:  ? 
00007ffa965ce80f: ?:0:  ? 
00007ffa965ce601: ?:0:  ? 
000000000040306f: ?:0:  ? 
00007ffa9accf24c: ?:0:  ? 
00000000004024dd: ?:0:  ? 
ffffffffffffffff: ?:0:  ? 
----------------------------------------------------------------------------- 
./jconsole.sh: line 6: 16387 Aborted                 (core dumped) bin/jconsole 
"$@"

Minimal script is attached. See the comments there. A small changes (remove 
empty lines, 
add comments etc.) can make a crash disappear.

-- 
Regards,
Igor
coclass 'mt'

FP_BASE=: 2
FP_ELEN=: IF64 {  8 11
FP_FLEN=: IF64 { 24 53

FP_EBIAS=: <. (FP_BASE ^ (FP_ELEN - 1)) - 1
FP_EPS=: FP_BASE ^ (- FP_FLEN)
FP_PREC=: FP_BASE * FP_EPS
FP_EMIN=: <. 1 - FP_EBIAS
FP_UNFL=: FP_BASE ^ FP_EMIN  NB. remove this line to avoid crash
FP_EMAX=: <. ((FP_BASE ^ FP_ELEN) - FP_BASE) - FP_EBIAS
FP_SFMIN=: FP_BASE ^ (FP_EMIN >. (- FP_EMAX))

mp=: +/ .*

max=:  >./`      0: @.(0 = #)  NB. remove this line to avoid crash

negneg=: -@]^:(0>[)
negpos=: -@]^:(0<:[)

sorim=: | `(+/"1@:| @:+.)@.(JCMPX = 3!:0)

fmtlog=: ;@:(40 17 17 17 17 _16&(({.{.@('d<n/a>'&(8!:2)))&.>))

dhs2liso=: 1&$: :({.@] + (negneg~ {.) * i.@(negneg/)@])

norms=:  ((+/  &.:*:@: %    * ]) >./  )@,@:|                                    
             @ (+.^:(JCMPX = 3!:0))


ft4lisoa=: /(&i.)/(@$)
trcut=: 2 : '((m&*)@:(<./"1)@v $) {. ]'
trucut=: 1 _1 trcut (] ,. (-~ {:))
tr=: 2 : '0&$: :([ ((u~ (-~ ft4lisoa)) {.`(0 ,: {:)}@,: ]) v)'
diagliso=: 0 0 _&$: :(4 : 0)
  'd h s'=. x=. ((i. 3) < (# x))} 0 0 _ ,: x
  'm n'=. y=. 2 $ y
  H=. n (-@*^:(0 > ])) d
  S=. 0 >. <./ y , <. -: (n + m - | n - m + +: d)
  (h ,: s <. S) ];.0 (>: n) dhs2liso H , S
)
c=: {:!.1@$
rt=: (*@[ * |@[ <. (({.~ #)~ $)) {. ]
upd=: (@:{) (`[) (`])}
tru=: (<:~ 0&<.) tr trucut
ct=: +@:|:
setdiag=: 4 : 0
  'e dhs'=. x
  dhs=. ((i. 3) < (# dhs))} 0 0 _ ,: dhs
  liso=. dhs diagliso $ y
  e (liso"_)} y
)
stitcht=: ,.`([,.({.  ~   #)~)`(({.  ~   #),.])@.(*@-&#)
idmat=: a:&$: :((1;[) setdiag (0 $~ 2 $ ]))

tmonad=: 2 : 0
  '`vgety vgeto vrcond vferr vberr'=. n
  try. rcond=. vrcond y catch. rcond=. _ end.
  try.
    argy=. vgety y
    try.
      't s'=. timespacex 'ret=. ' , m , ' argy'
      try.
        out=. vgeto ret
        try. ferr=. y vferr out catch. ferr=. _. end.
        try. berr=. y vberr out catch. berr=. _. end.
      catch.
        'ferr berr'=. 2 # _.
      end.
    catch.
      dbsig 3
    end.
  catch.
    'ferr berr t s'=. 4 # _.
  end.
  logline=. fmtlog_mt_ m ; rcond ; ferr ; berr ; t ; s
  logline (1!:2) 2
  wd^:IFQT 'msgs'
    NB. to avoid crash in clean session modify the line above by either:
    NB. - remove that line
    NB. - or append a comment at the end of that line
  EMPTY
)

QFNB=: 32
QFNX=: 128

latzr=: 4 : 0
  iso=. < < < (dhs2liso 0 , x) , _1
  n=. c y
  sfxB=. (- n) {. y
  y=. (- n) }. y
  pfx=. 0 {."1 y
  while. c y do.
    y=. y , {. sfxB
    sfxB=. 1 1 }. sfxB
    z=. {."1 y
    bak=. iso { z
    z=. larfgb 0 iso} z
    y=. ((1) _1} z) larzlcfc }."1 y
    pfx=. (pfx , 0) ,. bak iso} z
  end.
  pfx
)

tzzrf=: 3 : 0
  y=. 0 , y
  l=. -/ 'm1 n'=. $ y
  sfxB=. (- n) {. y
  y=. (- n) }. y
  pfx=. 0 {."1 y
  nb=. QFNB <. c y
  I=. idmat nb
  O=. (2 # nb) $ 0
  while. QFNX < c y do.
    y=. y , nb {. sfxB
    sfxB=. (2 # nb) }. sfxB
    Z=. l latzr nb {."1 y
    y=. (I ,~ l {. Z) larzblcfc nb }."1 y
    I=. O , I
    pfx=. pfx stitcht Z
  end.
  pfx stitcht l latzr y , sfxB
)


REFSAFMIN=: FP_SFMIN % FP_EPS
larxtf=: 2 : '(] (] ((0 ,~ [) ,.  (mp }:) , _1 { ]) ({~ (<@;~ i.@>:)@#       
))^:(-&#)  1  1&rt)@(-@(m&{) *"1 (_1;a:) tru@setdiag (v ct)@(0&(m})))'
larxlcxc=: 1 : '] - [ */ (mp~ +@(0&(m}) * m&{))~'  NB. C - v * ((v * τ)' * C)
larfg=: 4 : 0
  'ioa iot'=. x
  alpha=. ioa { y
  y=. 0 iot} y                            NB. τ := 0
  ynorm=. norms y
  if. ynorm =!.0 | 9 o. alpha do.         NB. ||y|| == ||(α,x,0)|| == ||α|| and 
α ∊ ℝ ?
    y                                     NB. (α,0,0) i.e. H==I, τ==0, β==α, 
v==0
  else.
    if. REFSAFMIN > ynorm do.             NB. xnorm, β may be inaccurate; scale 
x and recompute them
      y=. y % REFSAFMIN                   NB. (α_scaled,x_scaled,0)
      beta=. (9 o. alpha) negpos norms y  NB. use Re(α) instead Re(α_ascaled) 
since sign(Re(α)) == sign(Re(α_scaled)); |β_scaled| ∊ [REFSAFMIN,1)
      dzeta=. beta - ioa { y              NB. ζ := β_scaled-α_scaled
      tau=. dzeta % beta                  NB. τ := ζ/β_scaled
      beta=. REFSAFMIN * beta             NB. unscale β; if α is subnormal, it 
may lose relative accuracy
    else.
      beta=. (9 o. alpha) negpos ynorm    NB. β := -copysign(||y||,Re(α)), 
since ||y|| ≥ 0
      dzeta=. beta - alpha
      tau=. dzeta % beta
    end.
    y=. y % - dzeta                       NB. z := (trash,v,0)
    y=. (beta , tau) x} y                 NB. z := (β_scaled,v,τ)
  end.
)
larfgb=: _1 0&larfg
larztfc=:          0  larxtf (mp~)
larzlcfc=:  0 larxlcxc
testlarzt=: 3 : 0
  ('larztfc' tmonad ((((idmat@]`(       (-~ i.)@])`[)} c)@tzzrf@(tru~ 
-~/@$))`]`(_."_)`(_."_)`(_."_))) 0 {:: y

  EMPTY
)
testref=: 1 : 'EMPTY [ testlarzt_mt_@(u ; u)^:(200 >: <./)'
testlow=: 1 : 0
  (u testref_mt_ ) y  NB. matrices with min dimention ≤ 200 only

  EMPTY
)
test=: 1 : 0
  (u testlow_mt_ ) y  NB. low-level algorithms

  EMPTY
)

?@$&0 test_mt_ 10 10
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to