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 <earthspo...@gmail.com> 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 <rauldmil...@gmail.com> 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 <earthspo...@gmail.com> 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 <rauldmil...@gmail.com> 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

Reply via email to