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

Unified Diff: src/base/platform/semaphore.cc

Issue 1912923003: Check for semaphore alignment on posix platforms. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/base/platform/semaphore.cc
diff --git a/src/base/platform/semaphore.cc b/src/base/platform/semaphore.cc
index 284474e937ef3289416ba6da81888ec359d6dd76..f53df6741f56a62c991c560ae68a4289bbe74601 100644
--- a/src/base/platform/semaphore.cc
+++ b/src/base/platform/semaphore.cc
@@ -74,6 +74,13 @@ bool Semaphore::WaitFor(const TimeDelta& rel_time) {
#elif V8_OS_POSIX
Semaphore::Semaphore(int count) {
+ // The sem_init() does not check for alignment of the native handle.
+ // Unaligned native handle can later cause a failure in semaphore signal.
+ // Check the alignment here to catch the failure earlier.
+ // Context: crbug.com/605349.
+ const uintptr_t kPointerAlignmentMask = sizeof(void*) - 1;
+ CHECK_EQ(
+ 0, reinterpret_cast<uintptr_t>(&native_handle_) & kPointerAlignmentMask);
DCHECK(count >= 0);
#if V8_LIBC_GLIBC
// sem_init in glibc prior to 2.1 does not zero out semaphores.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698