Fix assert in SpanHolder::finish() with fibers#49673
Fix assert in SpanHolder::finish() with fibers#49673Avogar merged 15 commits intoClickHouse:masterfrom
Conversation
|
This is an automated comment for commit 900aca5 with description of existing statuses. It's updated for the latest CI running
|
|
Check this one as well, please |
Sure, I already saw it. Actually, it looks like a bug in tsan itself. The same check as in #37910, but commented that it should be fixed in clang-15. @tavplubix maybe you can add something? |
I'm not sure
The stacktrace is different, it's another issue. #37910 was related to signal handling in tsan, see google/sanitizers#1541. And now there are no signals but SIGSEGV:
AFAIR, this check may fail when tsan gets an unexpected synchronous signal. So this check has failed because of SIGSEGV (tsan tried to handle it but failed). Let's try to find where exactly it got segfault (we don't have line numbers in the stacktrace, but we have disasm with the instruction pointer): Looks like it represents this loop with So, seems like the list was corrupted somehow. How it could happen:
1 and 2 are unlikely, so I would say it's 3 or 4. It's a bit suspicious that it involves |
Sorry, I was mistaken, actually it points to the faulty instruction (because it was not executed and It's interesting that it must have executed Btw, a similar address ( |
Probably it's because Another interesting observation: |
Backport #49673 to 23.4: Fix assert in SpanHolder::finish() with fibers
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Fix assert in SpanHolder::finish() with fibers by making thread local variable fiber local.
Closes #49185
Closes #49178