Fix a memory leak when using non-wx threads

The wxThreadSpecificInfo object created by wxThreadSpecificInfo::Get()
was only released by the wxThreadInternal's cleanup, which meant that it
was leaked if wxThreadSpecificInfo::Get() was called by a thread not
created by wxThread, e.g. when using std::async or std::thread.

Fix this by simply using C++11 thread_local and removing the entire
wxThreadSpecificInfo machinery entirely.

See #23535.

Closes #23543.
This commit is contained in:
Antti Nietosvaara 2023-05-10 15:13:08 +03:00 committed by Vadim Zeitlin
parent e85b431686
commit d666d1e222
17 changed files with 15 additions and 272 deletions

View file

@ -475,7 +475,6 @@ MONODLL_OBJECTS = \
$(OBJS)\monodll_tarstrm.o \
$(OBJS)\monodll_textbuf.o \
$(OBJS)\monodll_textfile.o \
$(OBJS)\monodll_threadinfo.o \
$(OBJS)\monodll_time.o \
$(OBJS)\monodll_timercmn.o \
$(OBJS)\monodll_timerimpl.o \
@ -637,7 +636,6 @@ MONOLIB_OBJECTS = \
$(OBJS)\monolib_tarstrm.o \
$(OBJS)\monolib_textbuf.o \
$(OBJS)\monolib_textfile.o \
$(OBJS)\monolib_threadinfo.o \
$(OBJS)\monolib_time.o \
$(OBJS)\monolib_timercmn.o \
$(OBJS)\monolib_timerimpl.o \
@ -787,7 +785,6 @@ BASEDLL_OBJECTS = \
$(OBJS)\basedll_tarstrm.o \
$(OBJS)\basedll_textbuf.o \
$(OBJS)\basedll_textfile.o \
$(OBJS)\basedll_threadinfo.o \
$(OBJS)\basedll_time.o \
$(OBJS)\basedll_timercmn.o \
$(OBJS)\basedll_timerimpl.o \
@ -918,7 +915,6 @@ BASELIB_OBJECTS = \
$(OBJS)\baselib_tarstrm.o \
$(OBJS)\baselib_textbuf.o \
$(OBJS)\baselib_textfile.o \
$(OBJS)\baselib_threadinfo.o \
$(OBJS)\baselib_time.o \
$(OBJS)\baselib_timercmn.o \
$(OBJS)\baselib_timerimpl.o \
@ -7170,9 +7166,6 @@ $(OBJS)\monodll_textbuf.o: ../../src/common/textbuf.cpp
$(OBJS)\monodll_textfile.o: ../../src/common/textfile.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monodll_threadinfo.o: ../../src/common/threadinfo.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monodll_time.o: ../../src/common/time.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@ -9764,9 +9757,6 @@ $(OBJS)\monolib_textbuf.o: ../../src/common/textbuf.cpp
$(OBJS)\monolib_textfile.o: ../../src/common/textfile.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monolib_threadinfo.o: ../../src/common/threadinfo.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\monolib_time.o: ../../src/common/time.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@ -12358,9 +12348,6 @@ $(OBJS)\basedll_textbuf.o: ../../src/common/textbuf.cpp
$(OBJS)\basedll_textfile.o: ../../src/common/textfile.cpp
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\basedll_threadinfo.o: ../../src/common/threadinfo.cpp
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\basedll_time.o: ../../src/common/time.cpp
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
@ -12703,9 +12690,6 @@ $(OBJS)\baselib_textbuf.o: ../../src/common/textbuf.cpp
$(OBJS)\baselib_textfile.o: ../../src/common/textfile.cpp
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\baselib_threadinfo.o: ../../src/common/threadinfo.cpp
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\baselib_time.o: ../../src/common/time.cpp
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<

View file

@ -511,7 +511,6 @@ MONODLL_OBJECTS = \
$(OBJS)\monodll_tarstrm.obj \
$(OBJS)\monodll_textbuf.obj \
$(OBJS)\monodll_textfile.obj \
$(OBJS)\monodll_threadinfo.obj \
$(OBJS)\monodll_time.obj \
$(OBJS)\monodll_timercmn.obj \
$(OBJS)\monodll_timerimpl.obj \
@ -682,7 +681,6 @@ MONOLIB_OBJECTS = \
$(OBJS)\monolib_tarstrm.obj \
$(OBJS)\monolib_textbuf.obj \
$(OBJS)\monolib_textfile.obj \
$(OBJS)\monolib_threadinfo.obj \
$(OBJS)\monolib_time.obj \
$(OBJS)\monolib_timercmn.obj \
$(OBJS)\monolib_timerimpl.obj \
@ -841,7 +839,6 @@ BASEDLL_OBJECTS = \
$(OBJS)\basedll_tarstrm.obj \
$(OBJS)\basedll_textbuf.obj \
$(OBJS)\basedll_textfile.obj \
$(OBJS)\basedll_threadinfo.obj \
$(OBJS)\basedll_time.obj \
$(OBJS)\basedll_timercmn.obj \
$(OBJS)\basedll_timerimpl.obj \
@ -982,7 +979,6 @@ BASELIB_OBJECTS = \
$(OBJS)\baselib_tarstrm.obj \
$(OBJS)\baselib_textbuf.obj \
$(OBJS)\baselib_textfile.obj \
$(OBJS)\baselib_threadinfo.obj \
$(OBJS)\baselib_time.obj \
$(OBJS)\baselib_timercmn.obj \
$(OBJS)\baselib_timerimpl.obj \
@ -7627,9 +7623,6 @@ $(OBJS)\monodll_textbuf.obj: ..\..\src\common\textbuf.cpp
$(OBJS)\monodll_textfile.obj: ..\..\src\common\textfile.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\textfile.cpp
$(OBJS)\monodll_threadinfo.obj: ..\..\src\common\threadinfo.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\threadinfo.cpp
$(OBJS)\monodll_time.obj: ..\..\src\common\time.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\time.cpp
@ -10221,9 +10214,6 @@ $(OBJS)\monolib_textbuf.obj: ..\..\src\common\textbuf.cpp
$(OBJS)\monolib_textfile.obj: ..\..\src\common\textfile.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\textfile.cpp
$(OBJS)\monolib_threadinfo.obj: ..\..\src\common\threadinfo.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\threadinfo.cpp
$(OBJS)\monolib_time.obj: ..\..\src\common\time.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\time.cpp
@ -12815,9 +12805,6 @@ $(OBJS)\basedll_textbuf.obj: ..\..\src\common\textbuf.cpp
$(OBJS)\basedll_textfile.obj: ..\..\src\common\textfile.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\textfile.cpp
$(OBJS)\basedll_threadinfo.obj: ..\..\src\common\threadinfo.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\threadinfo.cpp
$(OBJS)\basedll_time.obj: ..\..\src\common\time.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) ..\..\src\common\time.cpp
@ -13160,9 +13147,6 @@ $(OBJS)\baselib_textbuf.obj: ..\..\src\common\textbuf.cpp
$(OBJS)\baselib_textfile.obj: ..\..\src\common\textfile.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\textfile.cpp
$(OBJS)\baselib_threadinfo.obj: ..\..\src\common\threadinfo.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\threadinfo.cpp
$(OBJS)\baselib_time.obj: ..\..\src\common\time.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) ..\..\src\common\time.cpp

View file

@ -540,7 +540,6 @@
<ClCompile Include="..\..\src\common\tarstrm.cpp" />
<ClCompile Include="..\..\src\common\textbuf.cpp" />
<ClCompile Include="..\..\src\common\textfile.cpp" />
<ClCompile Include="..\..\src\common\threadinfo.cpp" />
<ClCompile Include="..\..\src\common\time.cpp" />
<ClCompile Include="..\..\src\common\timercmn.cpp" />
<ClCompile Include="..\..\src\common\timerimpl.cpp" />

View file

@ -234,9 +234,6 @@
<ClCompile Include="..\..\src\common\textfile.cpp">
<Filter>Common Sources</Filter>
</ClCompile>
<ClCompile Include="..\..\src\common\threadinfo.cpp">
<Filter>Common Sources</Filter>
</ClCompile>
<ClCompile Include="..\..\src\common\time.cpp">
<Filter>Common Sources</Filter>
</ClCompile>