Destructors of C++11 thread_local object are not called after task returned (IDFGH-13456) #14360
Labels
Resolution: NA
Issue resolution is unavailable
Status: Done
Issue is done internally
Type: Bug
bugs in IDF
IDF version.
v5.2, master
Espressif SoC revision.
ESP32-C3, ESP32-C6, ESP32-S3
Operating System used.
Linux
How did you build your project?
Command line with idf.py
Development Kit.
esp32-c6 devkit-c
What is the expected behavior?
TLS finalizers of C++
thread_local
variables seems to be missing from the current implementation of toolchain.MWE on other platform (linux,x64): https://godbolt.org/z/vfWWdh7qe
The TLS wrapper function registered the destructor of
thread_local
object to__cxa_thread_atexit
and get called aftermain
returned.But there are no such ABI function found in ESP-IDF.
What is the actual behavior?
Destructor of thread local variables are not called after the task died.
Logging messages excerpted from my C6
Steps to reproduce.
More Information.
Relevant crosstool-NG config files here:
RISC-V:
https://github.com/espressif/crosstool-NG/blob/esp-13.2.0_20240530/samples/riscv32-esp-elf/crosstool.config
ESP32-S3:
https://github.com/espressif/crosstool-NG/blob/esp-13.2.0_20240530/samples/xtensa-esp32s3-elf/crosstool.config
TLS finalizers in libsupc++:
https://github.com/espressif/gcc/blob/esp-13.2.0_20240530/libstdc%2B%2B-v3/libsupc%2B%2B/atexit_thread.cc
The text was updated successfully, but these errors were encountered: