Index: src/platform-win32.cc |
diff --git a/src/platform-win32.cc b/src/platform-win32.cc |
index f5d0913581311796912c0d449d2941ed4126fee3..be77360f0142925cca13a93f03b69ca61028452f 100644 |
--- a/src/platform-win32.cc |
+++ b/src/platform-win32.cc |
@@ -1817,13 +1817,16 @@ void Sampler::Start() { |
// thread. |
if (IsProfiling()) { |
// Get a handle to the calling thread. This is the thread that we are |
- // going to profile. We need to duplicate the handle because we are |
- // going to use it in the sampler thread. using GetThreadHandle() will |
- // not work in this case. |
- BOOL ok = DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), |
- GetCurrentProcess(), &data_->profiled_thread_, |
- THREAD_GET_CONTEXT | THREAD_SUSPEND_RESUME | |
- THREAD_QUERY_INFORMATION, FALSE, 0); |
+ // going to profile. We need to make a copy of the handle because we are |
+ // going to use it in the sampler thread. Using GetThreadHandle() will |
+ // not work in this case. We're using OpenThread because DuplicateHandle |
+ // for some reason doesn't work in Chrome's sandbox. |
+ data_->profiled_thread_ = OpenThread(THREAD_GET_CONTEXT | |
+ THREAD_SUSPEND_RESUME | |
+ THREAD_QUERY_INFORMATION, |
+ FALSE, |
+ GetCurrentThreadId()); |
+ BOOL ok = data_->profiled_thread_ != NULL; |
if (!ok) return; |
} |