Hello Chris, The session blocking was my fault. Sorry for having you mislead on this.
I used 'libedif.so' ⎕fx 'edif2' instead of 'libedif2.so' ⎕fx 'edif2' -- However, the latest version still segfaults on 'libedif2.so' ⎕fx 'edif2' 'libedif2.so' ⎕fx 'edif2' )off and 'libedif.so' ⎕fx 'edif2' 'libedif.so' ⎕fx 'edif2' )off Best regards, Hans-Peter Am 20.08.2018 um 18:48 schrieb Chris Moller: > Yet another bugfix committed to https://github.com/ChrisMoller/edif.git > > Mostly, what it does is detect multiple ⎕fx invocations of libedif2.so > and short-circuits them, leaving the inotify() process intact and the > message queue opened only once. It also detects )clear and > closes/unlinks the queue, kills the inotify() process, and closes any > open editor processes. > > Chris > > On 20/08/18 10:38, Hans-Peter Sorge wrote: >> >> Hello Chris, >> >> The session stays blocked - what ever I try fiddling around. >> >> During this fiddling I came across on other situation that makes the >> edif2 case even more interesting: >> >> (EDIF2 is a work space having edif2 as function only) >> >> The first session (eg. after reboot) has a double free corruption in >> either case. >> 1) 'libedif.so' ⎕fx 'edif2' .. 'libedif.so' ⎕fx 'edif2' .. )off >> or >> 2) )load a WS having function edif2 then 'libedif.so' ⎕fx 'edif2' .. >> )off >> >> >> [joy@joyw520 ~]$ apl >> >> 'libedif.so' ⎕fx 'edif2' >> edif2 >> >> )clear >> CLEAR WS >> )load EDIF2 >> SAVED 2018-08-20 16:03:15 (GMT+2) >> 'libedif.so' ⎕fx 'edif2' >> edif2 >> )off >> double free or corruption (fasttop) >> Abgebrochen (Speicherabzug geschrieben) >> >> >> The following case is not expected. Yet one could argue )save does >> some cleaning. >> >> [joy@joyw520 ~]$ apl >> >> 'libedif.so' ⎕fx 'edif2' >> edif2 >> )save EDIF2 >> NOT SAVED: THIS WS IS CLEAR WS >> )drop EDIF2 >> 2018-08-20 16:10:32 (GMT+2) >> )save EDIF2 >> 2018-08-20 16:10:36 (GMT+2) >> 'libedif.so' ⎕fx 'edif2' >> edif2 >> )off >> >> Goodbye. >> Session duration: 133.863 seconds >> >> >> But now, on a naked WS, the corruption is gone .... sofar I could not >> repeat a subsequent corruption until after a reboot! >> >> [joy@joyw520 ~]$ apl >> >> 'libedif.so' ⎕fx 'edif2' >> edif2 >> 'libedif.so' ⎕fx 'edif2' >> edif2 >> )off >> >> Goodbye. >> Session duration: 6.48602 seconds >> >> Best regards, >> Hans-Peter >> >> Am 20.08.2018 um 05:26 schrieb Chris Moller: >>> Hi, Hans-Peter, >>> >>> That quirk where you quad-fx edif2 twice... >>> >>> When edif2 starts, it fork()s a process to watch for changes in the >>> working-file copies of the functions passed to emacs, and it also >>> opens a POSIX message queue so the monitor process can communicate >>> changes to APL. When you quad-fx-ed edif2 twice, all that was >>> duplicated--two monitor processes, another sender on the queue, and >>> more signals being emitted. I've put a patch in (but haven't >>> committed it yet, and it should fix the segfault) that prevents all >>> that, but my question is whether the "session blocked" bug happens >>> only after the second quad-fx. I just can't reproduce the blocking >>> bug here, so I'm looking desperately for some non-obvious cause. >>> >>> Thanks, >>> Chris >>> >>> On 08/18/18 15:29, Hans-Peter Sorge wrote: >>>> >>>> Hello Chris, >>>> >>>> I have just one process running. >>>> >>>> I recompiled and reinstalled edif to make sure it's the most recent >>>> version. >>>> >>>> During editing with emacs: >>>> >>>> session is blocked, then in APL session >>>> >>>> Ctrl C >>>> fg >>>> >>>> 'some data' ENTER - no response >>>> >>>> in emacs: save >>>> >>>> in APL session: >>>> 'some data' replayed >>>> 'some data' response >>>> >>>> --------------------------------- >>>> >>>> There is on other quirk too: >>>> >>>> .... >>>> 'libedif.so' ⎕fx 'edif2' >>>> edif2 >>>> 'libedif.so' ⎕fx 'edif2' >>>> edif2 >>>> )off >>>> double free or corruption (fasttop) >>>> Abgebrochen (Speicherabzug geschrieben) [segmentation fault] >>>> >>>> Best regards, >>>> Hans-Peter >>>> >>>> >>>> Am 18.08.2018 um 02:39 schrieb Chris Moller: >>>>> >>>>> I can't make it fail, but I'll look closer in the morning. >>>>> >>>>> Is there any chance you have multiple APL processes running >>>>> concurrently? Apparently, that causes problems I hadn't caught before. >>>>> >>>>> >>>>> Chris >>>>> >>>>> >>>>> On 17/08/18 17:14, Hans-Peter Sorge wrote: >>>>>> >>>>>> Hello Chris, >>>>>> >>>>>> edif2 blocks the apl session again. >>>>>> >>>>>> edif: latest git. >>>>>> >>>>>> apl: 1069M >>>>>> >>>>>> Best Regards, >>>>>> >>>>>> Hans-Peter >>>>>> >>>>>> >>>>>> Am 16.08.2018 um 21:31 schrieb Chris Moller: >>>>>>> >>>>>>> Not that I expected otherwise, but edif and edif2 still work as >>>>>>> expected. >>>>>>> >>>>>>> cm >>>>>>> >>>>>>> >>>>>>> On 16/08/18 15:14, Juergen Sauermann wrote: >>>>>>>> Hi Hans-Peter, >>>>>>>> >>>>>>>> thanks, hopefully fixed in *SVN 1069*. >>>>>>>> >>>>>>>> Best Regards, >>>>>>>> /// Jürgen >>>>>>>> >>>>>>>> >>>>>>>> On 08/16/2018 07:29 PM, Hans-Peter Sorge wrote: >>>>>>>>> >>>>>>>>> Hello, >>>>>>>>> >>>>>>>>> The ⎕IO bug is back. >>>>>>>>> >>>>>>>>> (note: ⎕IO ←→ 0 seems to be set to 0 using edif2) >>>>>>>>> >>>>>>>>> >>>>>>>>> ∇qio_test[⎕]∇ >>>>>>>>> >>>>>>>>> ∇ >>>>>>>>> [0] qio_test >>>>>>>>> [1] ⎕IO >>>>>>>>> ∇ >>>>>>>>> >>>>>>>>> >>>>>>>>> ⎕IO←1 >>>>>>>>> ⎕IO >>>>>>>>> 1 >>>>>>>>> qio_test >>>>>>>>> 1 >>>>>>>>> ⍎¨ 'qio_test' 'qio_test' >>>>>>>>> 1 >>>>>>>>> 1 >>>>>>>>> >>>>>>>>> ⎕IO←0 >>>>>>>>> >>>>>>>>> ⎕IO >>>>>>>>> >>>>>>>>> 0 >>>>>>>>> >>>>>>>>> qio_test >>>>>>>>> 0 >>>>>>>>> ⍎¨ 'qio_test' 'qio_test' >>>>>>>>> 1 >>>>>>>>> 1 >>>>>>>>> >>>>>>>>> Greetings >>>>>>>>> >>>>>>>>> Hans-Peter >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Am 14.08.2018 um 18:17 schrieb Chris Moller: >>>>>>>>>> >>>>>>>>>> I just committed a minor patch to edif, fixing a relatively >>>>>>>>>> low probability bug involving a possible message queue name >>>>>>>>>> collision if you have two or more APL sessions open >>>>>>>>>> simultaneously. >>>>>>>>>> >>>>>>>>>> https://github.com/ChrisMoller/edif >>>>>>>>>> >>>>>>>>>> --cm >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >