diff options
author | alexeypa@chromium.org <alexeypa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-24 01:34:51 +0000 |
---|---|---|
committer | alexeypa@chromium.org <alexeypa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-24 01:34:51 +0000 |
commit | d5eb9ccc118f56565325cff1cbb24571511d1925 (patch) | |
tree | e5b9c05d2954b4c1f416970c8647463587aa73a1 /tools/valgrind/tsan | |
parent | 3214fd26bb2ccd17e2611f69c895f4b43cf87bf1 (diff) | |
download | chromium_src-d5eb9ccc118f56565325cff1cbb24571511d1925.zip chromium_src-d5eb9ccc118f56565325cff1cbb24571511d1925.tar.gz chromium_src-d5eb9ccc118f56565325cff1cbb24571511d1925.tar.bz2 |
Allow multiple base::MessagePumpForUI instances to be created simultanenously on Windows.
The current implementation of base::MessagePumpForUI on Windows registers a window class with a predefined name in order to create a message-only window. The window class is unregistered when base::MessagePumpForUI is deleted. This causes issues when two or more instances of base::MessagePumpForUI are created/destroyed simultanenously on different threads. For instance once thread can unregister the window class right before the other thread is trying to create a window using this class.
The CL addresses this problem by switching MessageWindow to implement a message-only window. It also moves MessageWindow from remoting/host/win to base/win along with the corresponding unit test.
MessageWindow registers a uniquely named window class per MessageWindow instance making sure that different MessageWindow objects do not share any resources. In the future this can be optimized further by registering a common window class shared by all MessageWindow objects in a thread-safe manner (by using LazyInstance for example).
BUG=241939
Review URL: https://chromiumcodereview.appspot.com/15261005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@201955 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/valgrind/tsan')
-rw-r--r-- | tools/valgrind/tsan/suppressions.txt | 31 |
1 files changed, 0 insertions, 31 deletions
diff --git a/tools/valgrind/tsan/suppressions.txt b/tools/valgrind/tsan/suppressions.txt index a771a48..2650100 100644 --- a/tools/valgrind/tsan/suppressions.txt +++ b/tools/valgrind/tsan/suppressions.txt @@ -1126,34 +1126,3 @@ ... fun:media::FFmpegVideoDecoder::Decode } -{ - bug_241939a - ThreadSanitizer:Race - fun:CreateDialogParamW - fun:CharPrevW - fun:SystemParametersInfoW - fun:RegisterClassExW - fun:base::MessagePumpForUI::InitMessageWnd - fun:base::MessagePumpForUI::MessagePumpForUI - fun:base::MessageLoop::MessageLoop - fun:remoting::AutoThread::ThreadMain -} -{ - bug_241939b - ThreadSanitizer:Race - fun:GetWindowLongW - fun:GetWindowLongW - fun:GetWindowLongW - fun:PostMessageW - fun:PostMessageW - fun:SetWindowTextW - fun:KiUserCallbackDispatcher - fun:LoadStringA - fun:LoadStringA - fun:LoadStringA - fun:CreateWindowExW - fun:base::MessagePumpForUI::InitMessageWnd - fun:base::MessagePumpForUI::MessagePumpForUI - fun:base::MessageLoop::MessageLoop - fun:remoting::AutoThread::ThreadMain -} |