On 5/31/24 14:52, Konstantin Belousov wrote:
On Wed, May 22, 2024 at 05:37:56AM +0000, Kyle Evans wrote:
The branch main has been updated by kevans:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=6e824f3713011f7955a4f88fb16445e8e2cbe72c

commit 6e824f3713011f7955a4f88fb16445e8e2cbe72c
Author:     Kyle Evans <kev...@freebsd.org>
AuthorDate: 2024-05-22 05:36:29 +0000
Commit:     Kyle Evans <kev...@freebsd.org>
CommitDate: 2024-05-22 05:37:41 +0000

     time: siginfo_recvd needs to be marked volatile
I do not think so.  It happens to work with the compilers we currently use.


Sorry, I meant to respond but it got lost somewhere in the stack. Can you expand on this specifically a bit more? I was under the impression that we'd generally need volatility due to write from SIGINFO handler / read repeatedly from main(), which serves to demonstrate my ignorance here. Is it that there are sufficient side-effect-y things between loads in the wait4() loop that the compiler won't do anything hinky, or more that it's insufficient and should have been fenced as well?

sig_atomic_t does not imply volatility, we must do it ourselves to avoid
     caching of siginfo_recvd loads.
For this purpose, standard provides atomic_signal_fence().

You would need to put it before read of siginfo_recvd (after wait4()), and
after update of siginfo_recvd in the signal handler.


Reply via email to