fix: a few fixes for ASAN
Summary
- fix(say): log_destroy shouldn't close STDERR_FILENO
Otherwise ASAN won't be able to write its famous last words.
NO_DOC=asan NO_CHANGELOG=asan NO_TEST=asan
- fiber: fix crashes by aligning fiber stack on a 16-byte boundary
Modern 64-bit architectures such as x86_64 and aarch64 require[1] that the stack be properly aligned on a 16-byte boundary; this ABI property lets any function use sse2/neon/simd instructions without having to take extra steps to align the stack.
Obviously, tarantool seems to work fine by default. However, I was able
to make it crash just by building it with ASAN enabled using clang 18.
This has to do with the change to sizeof(struct slab)
that happens
in this build mode.
Thus, the patch aims to add extra alignment steps, even for architectures which don't have such a requirement. This way we'll make it easier to test and maintain, not to mention that 32-bit machines are unlikely to be of interest for any production workload.
[1]: This may depend on certain arch/os settings, but it's definitely reasonable to take extra precautions in case the alignment mode is active.
NO_DOC=asan NO_CHANGELOG=asan NO_TEST=asan
Close #... Docs follow-up: not necessary / new issue