On Mon, Sep 24, 2018 at 10:18 PM Janne Blomqvist <blomqvist.ja...@gmail.com>
wrote:

> On Mon, Sep 24, 2018 at 7:48 PM Thomas Koenig <tkoe...@netcologne.de>
> wrote:
>
>> Hi Janne,
>>
>> > libgfortran has a recursion check in the error handling paths.  This
>> > works by checking the value of a static variable, and if it matches,
>> > aborting immediately instead of continuing error processing.
>> > Unfortunately, in a multi-threaded program, if two threads report an
>> > error at the same time, this can trigger this check, and thus the
>> > underlying reason for the error is never reported.
>>
>> I agree that this is a problem that should be addressed.  Hm...
>>
>> What do you think, would it be desirable / possible to keep the
>> recursive error check, but ensure thread safety by a suitable
>> locking mechanism?  As a first step, we should probably specify
>> what exactly we would like to happen.
>>
>> Let us assume that the aim is to keep the current behavior for normal
>> processes and allow concurrent error processing for multiple threads.
>>
>> This could be done by making the static variable thread-local.
>> I'm not sure that this would work reliably, or if some sort of
>> locking mechanism (probably involving PTHREAD_MUTEX_RECURSIVE)
>> would be required - only have one thread at a time process
>> an error.
>>
>> Do we actually want to keep the current behavior for non-threaded
>> programs?  I'd be in favor, but I do not feel strongly about that.
>>
>
> What I briefly was thinking about doing, was to use TLS. Or rather, since
> TLS is not supported on all targets, something like I did in
> intrinsics/random.c:get_rand_state(). But, since the error handling stuff
> should be async-signal-safe, the allocation in the setup path should be
> done separately, e.g. as part of library initialization.
>
> In the end I decided against it because
>
> 1) It's more complicated, in order to handle a quite unlikely edge case.
>
> 2) If recursion happens anyway, it's a bug in our error handling flow
> which should be fixed and not be papered over.
>
> Anyway, I'm not massively against this, if people have any particular
> opinion lets hear it.
>

PING! Any opinions on the above?

-- 
Janne Blomqvist

Reply via email to