https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88400
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Please provide a testcase to reproduce the issue. Also note that GCC 6 is no
longer supported. This sounds like an issue in the libsanitizer interceptor
to me, the pthread_create interceptor does
// Wait until the AsanThread object is initialized and the ThreadRegistry
// entry is in "started" state. One reason for this is that after this
// interceptor exits, the child thread's stack may be the only thing
holding
// the |arg| pointer. This may cause LSan to report a leak if leak checking
// happens at a point when the interceptor has already exited, but the
stack
// range for the child thread is not yet known.
while (atomic_load(¶m.is_registered, memory_order_acquire) == 0)
internal_sched_yield();
but sched_yield should allow other threads to do progress. That might not
work if the current thread is realtime of course. But isn't that a
user error (or a kernel bug when explicitely yield()ing)?