The word before an assignment is inspected during definition is it is a string. Parentheses prevent that. I'll fix it when I get back.
hhr On Thu, Nov 2, 2023, 11:37 PM Raul Miller <rauldmil...@gmail.com> wrote: > 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 > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm