[Bug libstdc++/97949] Recursive calls of std::call_once together with cout leads to deadlock under mingw64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97949 Jonathan Wakely changed: What|Removed |Added Target Milestone|12.2|--- --- Comment #4 from Jonathan Wakely --- This won't be fixed for 12.x
[Bug libstdc++/97949] Recursive calls of std::call_once together with cout leads to deadlock under mingw64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97949 Jakub Jelinek changed: What|Removed |Added Target Milestone|12.0|12.2 --- Comment #3 from Jakub Jelinek --- GCC 12.1 is being released, retargeting bugs to GCC 12.2.
[Bug libstdc++/97949] Recursive calls of std::call_once together with cout leads to deadlock under mingw64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97949 Jonathan Wakely changed: What|Removed |Added Target Milestone|--- |12.0
[Bug libstdc++/97949] Recursive calls of std::call_once together with cout leads to deadlock under mingw64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97949 --- Comment #2 from Jonathan Wakely --- Oh, and I think the cout calls just slow things down and introduce some serialization (in stdio) so that the threads run concurrently.
[Bug libstdc++/97949] Recursive calls of std::call_once together with cout leads to deadlock under mingw64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97949 --- Comment #1 from Jonathan Wakely --- This isn't specific to mingw, it's a bug in the std::call_once implementation for non-TLS targets. t2 runs outerDoOnce() and tries to acquire a mutex lock before running innerDoOnce(), but that mutex is held by t3 while it waits to try to run outerDoOnce(). t3 won't proceed until t2 finishes, which is blocked by t3.
[Bug libstdc++/97949] Recursive calls of std::call_once together with cout leads to deadlock under mingw64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97949 Jonathan Wakely changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2020-11-23 Ever confirmed|0 |1