I assume 'fa' does some sort of recursive freeing of memory. instead of removing the 'fa' call, Is a 'ras(c)' needed to increment some reference count? Something like:
B jtadd2(J jt,F f1,F f2,C*cmd){A c,x; if(f1==NULL) {jt->fopn+=2;R 1;}; GATV(c,LIT,1+strlen(cmd),1,0);MC(CAV(c)+1,cmd,AN(c)-1);cmd=CAV(c);RZ(ras(c)); if(jt->fopn+1>=AN(jt->fopf)){RZ(jt->fopa=ext(1,jt->fopa)); RZ(jt->fopf=ext(1,jt->fopf));} *cmd='<';x=cstr(cmd); RZ(ras(x)); RZ(*(jt->fopn+AAV(jt->fopa) )=x); RZ(*(jt->fopn+IAV(jt->fopf) )=(I)f1); *cmd='>';x=cstr(cmd); RZ(ras(x)); RZ(*(jt->fopn+AAV(jt->fopa)+1)=x); RZ(*(jt->fopn+IAV(jt->fopf)+1)=(I)f2); fa(c); R 1; } /* add 2 entries to jt->fopn table (for hostio); null arg commits entries */ See the added "RZ(ras(c))" in the third line. The crash goes away with this. On Thu, Mar 8, 2018 at 4:43 AM, Chris Double <chris.dou...@double.co.nz> wrote: > If I comment out the call to "fa(c)" in 'jtadd2' then the segfault > goes away. Is there some memory management issue related to the > allocation and freeing of the cmd string that is going on? > > On Thu, Mar 8, 2018 at 4:31 AM, Raul Miller <rauldmil...@gmail.com> wrote: >> Huh... >> >> I wonder if there's something uninitialized in libedit (or perhaps >> some other supporting library) that needs to be initialized? >> >> -- >> Raul >> >> >> On Wed, Mar 7, 2018 at 10:26 AM, Chris Double <chris.dou...@double.co.nz> >> wrote: >>> On Thu, Mar 8, 2018 at 3:29 AM, Chris Double <chris.dou...@double.co.nz> >>> wrote: >>>> I will investigate more though why the instability occurs. >>> >>> On closer debugging, it seems to be the add2 call, not the 'fdopen'. >>> With no changes this errors: >>> >>> 2!:2 '/bin/ls' >>> 10554 93976423924960 93976423925520 >>> 1 2 >>> Segmentation fault (core dumped) >>> >>> Note that I have to actually type in the "1 2" and it needs to have >>> the space. I can't "up arrow" in jconsole to get the previous history >>> value - it doesn't crash if I do that. >>> >>> If I comment out the 'fdopen' calls and put in dummy file pointers >>> then I still get the crash. >>> ---------------------------------------------------------------------- >>> 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