diff options
| author | Michał Łoś <michal.los@siili.com> | 2024-10-31 11:08:59 +0100 |
|---|---|---|
| committer | Michał Łoś <michal.los@siili.com> | 2024-11-05 14:36:17 +0100 |
| commit | a295f4f9130347d9708d77354bac85d58b495347 (patch) | |
| tree | 347abbebaa9e0018f8b60cc2e6b36218cc872a2c /src/opengl/qopenglbuffer.cpp | |
| parent | dc1ae86bad0b4eaa83909f663777c09fb2f2376b (diff) | |
Enable broken_threadlocal_dtors for VxWorks
Changes applied in commit 4fabde349f16b59f37568da2a4c050c6dd53a34e broke
VxWorks tests and examples, many of which crash with error:
```
pthreadLib: unable to create POSIX thread internal attributes.
```
This error appeared in multiple tests, but was tested on tst_QSignalSpy,
where it was 100% reproducible (I haven't check other tests for
reproducibility).
This above error is printed when VxWorks task starts and initializes its
pthread containers. Pthread starting procedure results in error
`S_objLib_OBJ_ID_ERROR`, on which documentation states that it means
"The <tid> parameter is an invalid task ID". This happens because
VxWorks pthread implementation clears its internal data, and only then
passes control to `taskExit` system procedure, which calls thread_local
destructors. Any calls to `pthread` routines which require current
thread internal data ends with error and termination.
While VxWorks uses clang internally, it implements `__cxa_thread_atexit`
and `__cxa_thread_atexit_impl`, which makes it pass `TEST_cxa_atexit` in
CMake, even thou their call order is different than on other platforms.
Enable QT_FEATURE_broken_threadlocal_dtors for VxWorks by failing
compilation of cxa_thread_atexit* tests, which fixes the crashes on
VxWorks.
Task-number: QTBUG-115777
Change-Id: I4109b66903333a94301afe7fe5634ac4365a70b4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/opengl/qopenglbuffer.cpp')
0 files changed, 0 insertions, 0 deletions
