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

-- 
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

Reply via email to