Subject: Re: [Boost-bugs] [Boost C++ Libraries] #2442: Application statically linked with Boost.Thread crashes when Google Desktop is installed (Windows XP)
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2012-04-11 06:17:04
#2442: Application statically linked with Boost.Thread crashes when Google Desktop
is installed (Windows XP)
---------------------------------------+------------------------------------
Reporter: kvo5v7l02@⦠| Owner: anthonyw
Type: Bugs | Status: new
Milestone: To Be Determined | Component: thread
Version: Boost 1.35.0 | Severity: Problem
Resolution: | Keywords: thread google desktop GS
---------------------------------------+------------------------------------
Comment (by anonymous):
The bug is more profound and brings out flaws in the design itself.
I recently started using boost threads in one of my project (has dlls and
exes) and stumbled on this problem quite early in the test cycle. After I
analyzed the crash dump, I was lead to look at the dumpbin output for my
exe and dll for static TLS entires. I found new entries in the place where
there used to be none before I had started using boost threads.
As my dll(s) are explicitly loaded I did not use static TLS in my code
before, but now the boost thread library has put in static TLS without
taking into account which module it is linking into and assumptions of it.
I presume(hope) boost thread library is using static TLS to only attach
it's own TLS callbacks. Though I wish this method was avoided.
Given that TLS callbacks would be called before dll initialization code -
implementation should have put tighter control on what the callback
function calls (directly and indirectly) - definitely not call or read or
write c/c++ runtime code/date. But this implementation has led to allow
calls to its own functions that are compiled (with the same flags like
/GS) along with the code of the user of the library.
If the implementation had not used automatic char buffer like in the case
of "create_once_mutex" the problem would not have occurred, as buffer
overflow check is only applied to functions that have buffers. Or may be
naked functions which deliberately avoids buffer overflow checks could
have been used.
As I am not very sure about how static TLS is used I suspect there could
be more problems lurking around.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/2442#comment:1> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:09 UTC