https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107857
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #2) > See also https://stackoverflow.com/a/77515095/981959 And my comment there: This seems like a bug in winpthreads. The INITIALIZER macro should not exist if destroying the mutex requires a function call. Either you need a function call to create it and destroy it, or you use the initializer macro and don't need to do anything to destroy it.