I don't think this kind of problem is that reliable.
Anyways, running under gdb and triggering the bug, gets me:
{{a.=.'oops'}}
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff28bd93a in jtcrelocalsyms (jt=0x7ffff13f8200,
l=0x5555555c7700, c=0x5555555c7680, type=3, dyad=0, flags=262144)
at ../../../../jsrc/cx.c:946
946 if(AN(neww)){ // ignore blank string
(gdb) where
#0 0x00007ffff28bd93a in jtcrelocalsyms (jt=0x7ffff13f8200,
l=0x5555555c7700, c=0x5555555c7680, type=3, dyad=0, flags=262144)
at ../../../../jsrc/cx.c:946
#1 0x00007ffff28c0e13 in jtcolon (jt=0x7ffff13f8200, a=0x7ffff3a26740
<Bnum+1344>, w=0x5555555c7380) at ../../../../jsrc/cx.c:1211
#2 0x00007ffff2921039 in jtparsea (jt=0x7ffff13f8200,
queue=0x5555555c75b8, nwds=5) at ../../../../jsrc/p.c:869
#3 0x00007ffff291ec70 in jtparse (jt=0x7ffff13f8200,
w=0x5555555c7580) at ../../../../jsrc/p.c:290
#4 0x00007ffff292d645 in jtimmex (jt=0x7ffff13f8200,
w=0x5555555c7580) at ../../../../jsrc/px.c:54
#5 0x00007ffff28f71d9 in jtimmexexecct (jt=0x7ffff13f8200,
x=0x5555555c7580) at ../../../../jsrc/io.c:382
#6 0x00007ffff28f4f42 in jdo (jt=0x7ffff13f8000, lp=0x55555592de60
"{{a.=.'oops'}}") at ../../../../jsrc/io.c:418
#7 0x00007ffff28f4d25 in JDo (jt=0x7ffff13f8000, lp=0x55555592de60
"{{a.=.'oops'}}") at ../../../../jsrc/io.c:523
#8 0x0000555555557710 in jedo (sentence=0x55555592de60
"{{a.=.'oops'}}") at ../../../../jsrc/jeload.c:92
#9 0x000055555555724f in main (argc=1, argv=0x7fffffffe288) at
../../../../jsrc/jconsole.c:393
And jtcrelocalsyms also gets called when parsing {{(a.)=.'oops'}} but
I guess things have been initialized differently or something, because
that doesn't crash.
FYI,
--
Raul
On Thu, Nov 2, 2023 at 6:23 PM Ian Clark <[email protected]> wrote:
>
> If so then shouldn't putting parentheses round (a.) still crash?
> But it doesn't…
>
> {{(a.)=.'oops' y}}
>
> 3 : '(a.)=.''oops'' y'
>
>
> This doesn't crash either:
>
>
> {{a.,''=.'oops' y}}
>
> 3 : 'a.,''''=.''oops'' y'
>
>
>
>
> On Thu, 2 Nov 2023 at 22:15, Raul Miller <[email protected]> wrote:
>
> > I think what's happening in {{ a.=.'oops' }} is that the left hand
> > side of =. is being inspected during parsing (because literal
> > expressions are valid assignment targets), but J isn't prepared to
> > deal with some of the characters which are present in this context.
> >
> > --
> > Raul
> >
> > On Thu, Nov 2, 2023 at 6:07 PM Ian Clark <[email protected]> wrote:
> > >
> > > It does for me too on my Mac mini.
> > >
> > > JVERSION
> > >
> > > Engine: j903/j64/darwin
> > >
> > > Release-b: commercial/2022-01-28T04:07:40
> > >
> > > Library: 9.03.08
> > >
> > > Qt IDE: 1.9.5/5.15.2(5.15.2)
> > >
> > > Platform: Darwin 64
> > >
> > > Installer: J903 install
> > >
> > > InstallPath: /applications/j903
> > >
> > > Contact: www.jsoftware.com
> > >
> > >
> > > After the 3rd or 4th crash I actually got an Apple crash report. The
> > whole
> > > thing is too long to insert here, but I have kept a copy.
> > > The key part IMHO is this:
> > >
> > > +++++++++++++++++++++++++++++++++++
> > > Notes:
> > > PC register does not match crashing frame (0x0 vs 0x115314C97)
> > >
> > > Crashed Thread: 0 Dispatch queue: com.apple.main-thread
> > >
> > > Exception Type: EXC_BAD_ACCESS (SIGSEGV)
> > > Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000028
> > > Exception Codes: 0x0000000000000001, 0x0000000000000028
> > >
> > > Termination Reason: Namespace SIGNAL, Code 11 Segmentation fault: 11
> > > Terminating Process: exc handler [1282]
> > >
> > > VM Region Info: 0x28 is not in any region. Bytes before following
> > region:
> > > 140723209813976
> > > REGION TYPE START - END [ VSIZE] PRT/MAX
> > > SHRMOD REGION DETAIL
> > > UNUSED SPACE AT START
> > > --->
> > > mapped file 7ffcaceec000-7ffcd260c000 [599.1M] r-x/r-x
> > > SM=COW ...t_id=e024f55b
> > >
> > > Error Formulating Crash Report:
> > > PC register does not match crashing frame (0x0 vs 0x115314C97)
> > > +++++++++++++++++++++++++++++++++++
> > >
> > > AFAICT you can replace 'oops' with a string, name or numeral to get the
> > > crash. (Not tested extensively.)
> > >
> > >
> > > On Thu, 2 Nov 2023 at 21:33, Raul Miller <[email protected]> wrote:
> > >
> > > > This reliably crashes J for me (all versions since j902, but j901
> > > > didn't support the {{ }} notation).
> > > >
> > > > {{ a.=.'oops' y }}
> > > >
> > > > FYI,
> > > >
> > > > --
> > > > Raul
> > > > ----------------------------------------------------------------------
> > > > For information about J forums see http://www.jsoftware.com/forums.htm
> > > >
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm