If this is SysFileTree-specific then there must be something unique in SysFileTree. I think it is the only routine where we use try/catch. Might this try/catch interfere with our ThrowExceptionX() ?
On Fri, Nov 20, 2020 at 3:02 PM Erich Steinböck <erich.steinbo...@gmail.com> wrote: > This is Windows-only. > But it also seems to be SysFileTree-specific - see below code sample. > > ~~~ > i = 1 > start: > signal on syntax > select case i > when 1 then call SysGetKey "z" > when 2 then call SysSearchPath "PATH", "%", "z" > when 3 then call SysFileSearch "%", "%", f., "z" > when 4 then call SysFileTree "%", f., "z" > when 5 then call SysFileTree "", f. > otherwise exit > end > say "no SYNTAX" > syntax: > signal off syntax > say condition("object")~code condition("object")~message > i += 1 > > m = ""~start("LENGTH") > r = m~result > signal start > ~~~ > > On Fri, Nov 20, 2020 at 1:08 PM Rick McGuire <object.r...@gmail.com> > wrote: > >> I suspected it would. I'm not sure what's going on here. The destructor >> for ApiContext in the ThrowException2 stub is supposed to release the >> kernel semaphore when an exception is thrown, then when the exception is >> caught in NativeActivation, the semaphore is reacquired. Somehow, the >> semaphore is ending up as a nested request, such that the main thread ends >> up holding on to it forever. I've traced this process in the debugger, and >> everything is happening as suspected, but somehow the mutex is still messed >> up. Does this fail on any other platforms, or is it just a Windows problem? >> >> Rick >> >> On Fri, Nov 20, 2020 at 5:58 AM Erich Steinböck < >> erich.steinbo...@gmail.com> wrote: >> >>> Replacing ThrowException2 with RaiseException2 in nullStringException() >>> in RexxUtilCommon.hpp makes this piece of code work again. >>> >>> On Fri, Nov 20, 2020 at 10:34 AM Erich Steinböck < >>> erich.steinbo...@gmail.com> wrote: >>> >>>> isolate the problem to a single test >>>>> >>>> OK, this piece of code reproduces the hang - both on 32- and 64-bit >>>> Windows >>>> >>>> ~~~ >>>> signal on syntax >>>> call SysFileTree "", f. >>>> syntax: >>>> >>>> m = ""~start("HELLO") >>>> r = m~result >>>> ~~~ >>>> >>>> _______________________________________________ >>> Oorexx-devel mailing list >>> Oorexx-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/oorexx-devel >>> >> _______________________________________________ >> Oorexx-devel mailing list >> Oorexx-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/oorexx-devel >> >
_______________________________________________ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel