Fix false alarm on thread suspend timeout

Root cause:
  CLOCK_REALTIME will jump backward/forward when system time-of-day clock is changed.
  It implies now_abs_ts will jump a lot across end_abs_ts.
  Then, it makes a false alarm (process crash) on thread suspend timeout when doing ComputeRelativeTimeSpec.

      if (ComputeRelativeTimeSpec(&rel_ts, end_abs_ts, now_abs_ts)) {
        return false;  // Timed out.
      }

Solution:
  Use CLOCK_MONOTONIC instead

Bug: 19296054
Bug: 19268145

(cherry picked from commit 071e48ecfc95b1c67b07c975190d51f646ac4276)

Change-Id: I68fa5afda75e53373e836dd7779821aeb6f1bd46
(cherry picked from commit 7d9ad8bb71df2b1dc957121ef2ebee69d96f8e0c)
diff --git a/runtime/base/mutex.cc b/runtime/base/mutex.cc
index 9b97411..0d747c3 100644
--- a/runtime/base/mutex.cc
+++ b/runtime/base/mutex.cc
@@ -555,7 +555,7 @@
 #if ART_USE_FUTEXES
   bool done = false;
   timespec end_abs_ts;
-  InitTimeSpec(true, CLOCK_REALTIME, ms, ns, &end_abs_ts);
+  InitTimeSpec(true, CLOCK_MONOTONIC, ms, ns, &end_abs_ts);
   do {
     int32_t cur_state = state_.LoadRelaxed();
     if (cur_state == 0) {
@@ -564,7 +564,7 @@
     } else {
       // Failed to acquire, hang up.
       timespec now_abs_ts;
-      InitTimeSpec(true, CLOCK_REALTIME, 0, 0, &now_abs_ts);
+      InitTimeSpec(true, CLOCK_MONOTONIC, 0, 0, &now_abs_ts);
       timespec rel_ts;
       if (ComputeRelativeTimeSpec(&rel_ts, end_abs_ts, now_abs_ts)) {
         return false;  // Timed out.