Hack to work around the current issues with rolling WebRTC into chromium.
In order to figure out the issue with the Mac 10.9 debug bot, this patch disables the ThreadChecker class on Mac in debug builds. For diagnostic purposes, it instead prints out when there's a thread mismatch. I'm also adding a DCHECK in case fetching the current thread id ever returns 0.

R=magjed@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/40679004

Cr-Commit-Position: refs/heads/master@{#8269}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8269 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/base/thread_checker_impl.cc b/webrtc/base/thread_checker_impl.cc
index 0b419d9..9ff2a97 100644
--- a/webrtc/base/thread_checker_impl.cc
+++ b/webrtc/base/thread_checker_impl.cc
@@ -21,22 +21,25 @@
 namespace rtc {
 
 PlatformThreadId CurrentThreadId() {
+  PlatformThreadId ret;
 #if defined(WEBRTC_WIN)
-  return GetCurrentThreadId();
+  ret = GetCurrentThreadId();
 #elif defined(WEBRTC_POSIX)
   // Pthreads doesn't have the concept of a thread ID, so we have to reach down
   // into the kernel.
 #if defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
-  return pthread_mach_thread_np(pthread_self());
+  ret = pthread_mach_thread_np(pthread_self());
 #elif defined(WEBRTC_LINUX)
-  return syscall(__NR_gettid);
+  ret =  syscall(__NR_gettid);
 #elif defined(WEBRTC_ANDROID)
-  return gettid();
+  ret = gettid();
 #else
   // Default implementation for nacl and solaris.
-  return reinterpret_cast<pid_t>(pthread_self());
+  ret = reinterpret_cast<pid_t>(pthread_self());
 #endif
 #endif  // defined(WEBRTC_POSIX)
+  DCHECK(ret);
+  return ret;
 }
 
 ThreadCheckerImpl::ThreadCheckerImpl() : valid_thread_(CurrentThreadId()) {
@@ -46,11 +49,23 @@
 }
 
 bool ThreadCheckerImpl::CalledOnValidThread() const {
-  CritScope scoped_lock(&lock_);
   const PlatformThreadId current_thread = CurrentThreadId();
+  CritScope scoped_lock(&lock_);
   if (!valid_thread_)  // Set if previously detached.
     valid_thread_ = current_thread;
+#if defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
+  // TODO(tommi): Remove this hack after we've figured out the roll issue
+  // with chromium's Mac 10.9 debug bot.
+  if (valid_thread_ != current_thread) {
+    // At the moment, this file cannot use logging from either webrtc or
+    // libjingle. :(
+    printf("*** WRONG THREAD *** current=%i vs valid=%i\n",
+        current_thread, valid_thread_);
+  }
+  return true;  // le sigh.
+#else
   return valid_thread_ == current_thread;
+#endif
 }
 
 void ThreadCheckerImpl::DetachFromThread() {