There were changes after Jul 27, can you catch up the latest commits? The current segfault should be more deterministic.
Пн, 15 авг 2016, Thomas Costigliola написал(а): > That's strange. Mine doesn't crash in jtprobe. It crashes in jtsymfree being > called from jtsymfreeh where u is invalid memory on these lines: > > u=*wv+jt->sympv; > RZ(symfree(u)); > > I'm not using the latest commit though. I am using this one: > > commit 05d24010d132df1927c621b376b60135add93b36 > Author: HenryHRich <henryhr...@gmail.com> > Date: Wed Jul 27 18:01:36 2016 -0400 > > > On 08/13/2016 11:49 PM, bill lam wrote: > > I don't know what has happened or any idea about symbol table. > > It crashed in s.c , back trace: > > > > #0 0x00007ffff7065ff4 in jtprobe (jt=jt@entry=0x643e70, > > a=<optimized out>, > > g=0x7ffff7f315a0) at /home/bill/gitdev/jsource/jsrc/s.c:167 > > #1 0x00007ffff7066467 in jtprobelocal (jt=jt@entry=0x643e70, > > a=a@entry=0x7ffff7f31620) > > at /home/bill/gitdev/jsource/jsrc/s.c:202 > > #2 0x00007ffff70667f4 in jtsyrd (jt=jt@entry=0x643e70, > > a=0x7ffff7f31620, > > symb=symb@entry=0x0) at > > /home/bill/gitdev/jsource/jsrc/s.c:314 > > #3 0x00007ffff706b2ec in jtex (jt=jt@entry=0x643e70, > > w=<optimized out>) > > at /home/bill/gitdev/jsource/jsrc/sn.c:205 > > #4 0x00007ffff717b09a in jttest (jt=0x643e70, w=0x7ffff7f317a0) > > at /home/bill/gitdev/jsource/jsrc/x.c:262 > > #5 0x00007ffff701a09b in jtdfs1 (jt=jt@entry=0x643e70, > > w=<optimized out>, > > self=<optimized out>) at > > /home/bill/gitdev/jsource/jsrc/au.c:32 > > #6 0x00007ffff705bdbd in jtparsea (jt=jt@entry=0x643e70, > > w=w@entry=0x7ffff7f31320) > > at /home/bill/gitdev/jsource/jsrc/p.c:376 > > #7 0x00007ffff705c890 in jtparse (jt=jt@entry=0x643e70, > > w=0x7ffff7f31320) > > at /home/bill/gitdev/jsource/jsrc/p.c:126 > > #8 0x00007ffff705ea5a in jtimmex (jt=jt@entry=0x643e70, > > w=w@entry=0x7ffff7f312a0) > > at /home/bill/gitdev/jsource/jsrc/px.c:37 > > #9 0x00007ffff7052f0b in jdo (jt=jt@entry=0x643e70, > > lp=<optimized out>) > > at /home/bill/gitdev/jsource/jsrc/io.c:148 > > #10 0x00007ffff7052f4a in JDo (jt=0x643e70, lp=<optimized out>) > > at /home/bill/gitdev/jsource/jsrc/io.c:203 > > #11 0x0000000000402422 in jedo () > > #12 0x000000000040240c in main () > > > > list starting from 161 (crashed at line 167), perhaps you may > > want to reinstate line 166 for checking. > > > > 161 // a is A for name, g is symbol table > > 162 // result is L* address of the symbol-table entry for > > the name, or 0 if not found > > 163 L*jtprobe(J jt,A a,A g){C*s;I*hv,m;L*v;NM*u; > > 164 RZ(a&&g);u=NAV(a); > > 165 // If there is bucket information, > > 166 // obsolete > > ASSERTSYS(jt->local||(u->bucket==0&&u->bucketx==0),"bucket"); > > 167 m=u->m; s=u->s; > > hv=AV(g)+SYMHASH(u->hash,AN(g)-SYMLINFOSIZE); // get bucket > > number among the hash tables > > 168 if(!*hv)R 0; /* (0) empty > > slot */ > > 169 v=*hv+jt->sympv; > > 170 while(1){ > > 171 u=NAV(v->name); > > 172 if(m==u->m&&!memcmp(s,u->s,m))R v->val?v:0; // (1) > > exact match - if there is a value, use this slot, else say not > > found > > 173 if(!v->next)R 0; /* (2) link > > list end */ > > 174 v=v->next+jt->sympv; > > 175 }} > > > > > > Пт, 12 авг 2016, Thomas Costigliola написал(а): > > > I am having trouble with custom code that used to work but no longer does > > > in > > > the latest beta sources. The trouble seems to be related to symbol tables > > > and/or reference counting etc. I managed to reduce the issues to a small > > > piece of code which crashes under some circumstances but does not in the > > > pre-805 J sources. > > > > > > // in x.c > > > // Foreign 104 !: 1 > > > ... > > > case XC(104,1): R CDERIV(CIBEAM, jttest, 0, RMAX, 0, 0 ); > > > ... > > > > > > static F1(jttest){A z, n, loc=jt->local; > > > RZ(w); > > > RZ(jt->local=stcreate(2,1L,0L,0L)); > > > n=nfs(1,"A"); > > > IS(n,w); > > > ex(box(cstr("A"))); > > > symfreeh(jt->local,0L); > > > jt->local=loc; > > > R w; > > > } > > > > > > The code does the following: > > > 1. Create a local symbol table > > > 2. Assign the argument w to A in the local symbol table > > > 3. Erase A in the local symbol table > > > 4. Erase the local symbol table > > > 5. Return the argument > > > > > > Doing the following in the J session causes a crash in symfreeh due to > > > accessing invalid memory in jt->sympv > > > > > > 104!:1 ] 1 2 3 > > > 1 2 3 > > > B=. 1 2 3 > > > 104!:1 B > > > 1 2 3 > > > 104!:1 B > > > 1 2 3 > > > 104!:1 B > > > 1 2 3 > > > 104!:1 B > > > 1 2 3 > > > 104!:1 B > > > BOOM! > > > > > > Is this a bug or is there a new way to deal with local symbol tables? > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm -- regards, ==================================================== GPG key 1024D/4434BAB3 2008-08-24 gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm