[Bug fortran/93599] [9/10 regression] Bug in fortran asynchronous I/O wait function
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Feb 22 11:33:00 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93599
--- Comment #14 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-9 branch has been updated by Thomas Kथघnig
<tkoenig@gcc.gnu.org>:
https://gcc.gnu.org/g:c080a6fb6f0cf402affc287fc600c189980cfb2d
commit r9-8264-gc080a6fb6f0cf402affc287fc600c189980cfb2d
Author: Thomas König <tkoenig@gcc.gnu.org>
Date: Thu Feb 13 22:22:04 2020 +0100
Use au->lock exclusively for locking in async I/O.
2020-02-18 Thomas Koenig <tkoenig@gcc.gnu.org>
Backport from trunk
PR fortran/93599
* io/async.c (destroy_adv_cond): Do not destroy lock.
(async_io): Make sure au->lock is locked for finishing of thread.
Do not lock/unlock around signalling emptysignal. Unlock au->lock
before return.
(init_adv_cond): Do not initialize lock.
(enqueue_transfer): Unlock after signal.
(enqueue_done_id): Likewise.
(enqueue_done): Likewise.
(enqueue_close): Likewise.
(enqueue_data_transfer): Likewise.
(async_wait_id): Do not lock/unlock around signalling au->work.
(async_wait): Unlock after signal.
* io/async.h (SIGNAL): Add comment about needed au->lock.
Remove locking/unlocking of advcond->lock.
(WAIT_SIGNAL_MUTEX): Add comment. Remove locking/unlocking of
advcond->lock. Unlock mutex only at the end. Loop on
__ghread_cond_wait returning zero.
(REVOKE_SIGNAL): Add comment. Remove locking/unlocking of
advcond->lock.
(struct adv_cond): Remove mutex from struct.
More information about the Gcc-bugs
mailing list