Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Unified Diff: third_party/crashpad/crashpad/snapshot/win/crashpad_snapshot_test_image_reader.cc

Issue 2804713002: Update Crashpad to b4095401639ebe2ad33169e5c1d994065cbff1b8 (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/crashpad/crashpad/snapshot/win/crashpad_snapshot_test_image_reader.cc
diff --git a/third_party/crashpad/crashpad/snapshot/win/crashpad_snapshot_test_image_reader.cc b/third_party/crashpad/crashpad/snapshot/win/crashpad_snapshot_test_image_reader.cc
index a114d392e16c89962ef53501d96b5e091a695fca..6f4203d6c14a6d6c976875965e13b92f42872abe 100644
--- a/third_party/crashpad/crashpad/snapshot/win/crashpad_snapshot_test_image_reader.cc
+++ b/third_party/crashpad/crashpad/snapshot/win/crashpad_snapshot_test_image_reader.cc
@@ -17,10 +17,14 @@
#include "base/logging.h"
#include "client/crashpad_info.h"
#include "util/file/file_io.h"
+#include "util/synchronization/semaphore.h"
#include "util/win/scoped_handle.h"
+namespace {
+
DWORD WINAPI LotsOfReferencesThreadProc(void* param) {
- LONG* count = reinterpret_cast<LONG*>(param);
+ crashpad::Semaphore* semaphore =
+ reinterpret_cast<crashpad::Semaphore*>(param);
// Allocate a bunch of pointers to things on the stack.
int* pointers[1000];
@@ -28,28 +32,31 @@ DWORD WINAPI LotsOfReferencesThreadProc(void* param) {
pointers[i] = new int[2048];
}
- InterlockedIncrement(count);
+ semaphore->Signal();
Sleep(INFINITE);
return 0;
}
+} // namespace
+
int wmain(int argc, wchar_t* argv[]) {
CHECK_EQ(argc, 2);
crashpad::ScopedKernelHANDLE done(CreateEvent(nullptr, true, false, argv[1]));
+ PCHECK(done.is_valid()) << "CreateEvent";
PCHECK(LoadLibrary(L"crashpad_snapshot_test_image_reader_module.dll"))
<< "LoadLibrary";
// Create threads with lots of stack pointers to memory. This is used to
// verify the cap on pointed-to memory.
- LONG thread_ready_count = 0;
+ crashpad::Semaphore semaphore(0);
crashpad::ScopedKernelHANDLE threads[100];
for (int i = 0; i < arraysize(threads); ++i) {
threads[i].reset(CreateThread(nullptr,
0,
&LotsOfReferencesThreadProc,
- reinterpret_cast<void*>(&thread_ready_count),
+ reinterpret_cast<void*>(&semaphore),
0,
nullptr));
if (!threads[i].is_valid()) {
@@ -58,14 +65,8 @@ int wmain(int argc, wchar_t* argv[]) {
}
}
- for (;;) {
- if (InterlockedCompareExchange(&thread_ready_count,
- arraysize(threads),
- arraysize(threads) == arraysize(threads))) {
- // All threads have allocated their references.
- break;
- }
- Sleep(10);
+ for (int i = 0; i < arraysize(threads); ++i) {
+ semaphore.Wait();
}
crashpad::CrashpadInfo* crashpad_info =
@@ -80,8 +81,8 @@ int wmain(int argc, wchar_t* argv[]) {
crashpad::CheckedWriteFile(out, &c, sizeof(c));
// Parent process says we can exit.
- CHECK_EQ(WAIT_OBJECT_0, WaitForSingleObject(done.get(), INFINITE));
+ PCHECK(WaitForSingleObject(done.get(), INFINITE) == WAIT_OBJECT_0)
+ << "WaitForSingleObject";
return 0;
}
-

Powered by Google App Engine
This is Rietveld 408576698