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

Reply via email to