public inbox for fortran@gcc.gnu.org
 help / color / mirror / Atom feed
From: Martin Stein <mscfd@gmx.net>
To: Tobias Burnus <burnus@net-b.de>
Cc: fortran <fortran@gcc.gnu.org>, Jerry DeLisle <jvdelisle@charter.net>
Subject: Re: [Patch] Fortran: Fix libgfortran I/O race with newunit_free [PR99529]
Date: Thu, 11 Mar 2021 12:43:35 +0100	[thread overview]
Message-ID: <trinity-b55f718a-d4b9-4918-a852-d6b8d1b2bdb7-1615463015043@3c-app-gmx-bs23> (raw)
In-Reply-To: <9b6fa121-a5ea-4d2c-9924-fcdfe7d6d560@net-b.de>

I have seen the lock inversion with helgrind as well. Otherwise I
have not seen anything more in my real code. I will give the
thread sanitizer another try. Problem with both are the huge
number of false positives in conjunction with typical openmp code
(e.g. master thread allocates a big vector or matrix outside
openmp region, and then it is accessed within openmp loop by all
threads without locks of course -> possible data race warning).

BTW, I will do some more tests, but it looks like the patch fixes
the memory corruption issue. This morning I tried with a wrong
build setup, as I used patched gfortran but linked with unpatched
gcc, which probably used the unpatched libgfortran...

Thanks!
Martin
 
 
 

Gesendet: Donnerstag, 11. März 2021 um 11:38 Uhr
Von: "Tobias Burnus" <burnus@net-b.de>
An: "gcc-patches" <gcc-patches@gcc.gnu.org>, "fortran" <fortran@gcc.gnu.org>, "Jerry DeLisle" <jvdelisle@charter.net>, mscfd@gmx.net
Betreff: Re: [Patch] Fortran: Fix libgfortran I/O race with newunit_free [PR99529]
Revised version – the previous had a lock inversion, which could lead to
a deadlock, found by -fsanitize=thread. See transfer.c for the changes.

OK?

Tobias

On 11.03.21 10:42, Tobias Burnus wrote:
> Hi all,
>
> as found by Martin (thanks!) there is a race for newunit_free.
> While that call is within the unitlock for the calls in io/unit.c,
> the call in transfer.c did not use locks.
>
> Additionally,
>       unit = get_gfc_unit (dtp->common.unit, do_create);
>       set_internal_unit (dtp, unit, kind);
> gets first the unit (with proper locking when using the unit number
> dtp->common.unit) but then in set_internal_unit it re-sets the
> unit number to the same number without locking. That causes
> race warnings and if the assignment is not atomic it is a true race.
>
> OK for mainline? What about GCC 10?
>
> As Martin notes in the email thread and in the PR there are more
> race warnings (and likely true race issues).
>
> Tobias
>

  reply	other threads:[~2021-03-11 11:43 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-11  9:42 Tobias Burnus
2021-03-11 10:38 ` Tobias Burnus
2021-03-11 11:43   ` Martin Stein [this message]
2021-03-12  1:35   ` Jerry DeLisle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=trinity-b55f718a-d4b9-4918-a852-d6b8d1b2bdb7-1615463015043@3c-app-gmx-bs23 \
    --to=mscfd@gmx.net \
    --cc=burnus@net-b.de \
    --cc=fortran@gcc.gnu.org \
    --cc=jvdelisle@charter.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).