Branch: refs/heads/blead
Home: https://github.com/Perl/perl5
Commit: 0d601f070cc1266b97443bae69f7f8eb34fa93ab
https://github.com/Perl/perl5/commit/0d601f070cc1266b97443bae69f7f8eb34fa93ab
Author: Karl Williamson <[email protected]>
Date: 2020-12-08 (Tue, 08 Dec 2020)
Changed paths:
M perl.h
Log Message:
-----------
Fix up many-reader mutex typedef
This previously worked on some compilers, but not others.
Commit: 8fdf38a3a7e83738cbf9bba10ba3fe687963fe2f
https://github.com/Perl/perl5/commit/8fdf38a3a7e83738cbf9bba10ba3fe687963fe2f
Author: Karl Williamson <[email protected]>
Date: 2020-12-08 (Tue, 08 Dec 2020)
Changed paths:
M locale.c
Log Message:
-----------
duplocale() is part of Posix 2008 locales
Thus if we know we have the Posix versions, we have duplocale(), and
hence don't need to test separately for it.
Commit: cfaae47f842a064f1d08fc0cd008d997947d057a
https://github.com/Perl/perl5/commit/cfaae47f842a064f1d08fc0cd008d997947d057a
Author: Karl Williamson <[email protected]>
Date: 2020-12-08 (Tue, 08 Dec 2020)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Add debugging info to panic message
Commit: 8609fe004ed37605b00f517feb6e9c8eb127952c
https://github.com/Perl/perl5/commit/8609fe004ed37605b00f517feb6e9c8eb127952c
Author: Karl Williamson <[email protected]>
Date: 2020-12-08 (Tue, 08 Dec 2020)
Changed paths:
M ext/POSIX/POSIX.xs
M locale.c
M perl.h
Log Message:
-----------
Change name of mutex macro.
This macro is for localeconv(); the new name is clearer as to the
meaning, and this preps for further changes.
Commit: d9e22c6a8a05aab7fffdbf810f74ddfcb4efd752
https://github.com/Perl/perl5/commit/d9e22c6a8a05aab7fffdbf810f74ddfcb4efd752
Author: Karl Williamson <[email protected]>
Date: 2020-12-08 (Tue, 08 Dec 2020)
Changed paths:
M makedef.pl
M perl.h
M perlvars.h
Log Message:
-----------
Refactor locale mutex setup
This was prompted by my realization that even on a locale thread-safe
platform, there are functions we call that may not be thread-safe in
that they return their results in an internal static buffer, which may
be process-wide instead of per-thread. Tomasz Konojacki++ briefly
looked at Windows source code for localeconv() and this indeed did
appear to be the case.
If we thought a platform was thread-safe, no locale mutexes were set up,
and instead the calls in the code to lock were no-oops. This would lead
to potential races, the most likely candidate being localeconv(). None
have been reported, at least as far as we know. Likely that function
isn't called frequently. This would be true on both Posix 2008 and
Windows platforms, except possibly for FreeBSD, which may be the only
platform that we support that has a localeconv_l() function, which is
supposed to be immune from this issue..
The solution adopted here is to test for all the possible functions that
the Perl core uses that may be susceptible to this, and to set up the
mutex if any are found. Thus there won't be no-ops where there should
be a lock.
Commit: 7953f73fd803e53f20bdf0801f194691543b0f87
https://github.com/Perl/perl5/commit/7953f73fd803e53f20bdf0801f194691543b0f87
Author: Karl Williamson <[email protected]>
Date: 2020-12-08 (Tue, 08 Dec 2020)
Changed paths:
M ext/POSIX/POSIX.xs
M locale.c
M perl.h
Log Message:
-----------
Name individual locale locks
These locks for different functions all use the same underlying mutex;
but that may not always be the case. By creating separate names
used only when we think they will be necessary, the compiler will
complain if the conditions in the code that actually use them are the
same. Doing this showed a misspelling in an #ifdef, fixed in
9289d4dc7a3d24b20c6e25045e687321ee3e8faf
Commit: d523eeeb193a631f11e38eb49b4af1b27534853b
https://github.com/Perl/perl5/commit/d523eeeb193a631f11e38eb49b4af1b27534853b
Author: Karl Williamson <[email protected]>
Date: 2020-12-08 (Tue, 08 Dec 2020)
Changed paths:
M locale.c
Log Message:
-----------
locale.c: Unlock mutex before croaking
These cases aren't supposed to happen, but unlock the mutex first;
we could get into deadlock in trying to output the death message.
Compare: https://github.com/Perl/perl5/compare/41b27f0d99d7...d523eeeb193a