It's not an error to reenter InitializeClass.

OsConstants.<clinit> calls a native method that uses JNI to set fields.
This necessarily calls GetStaticFieldID, which entails a call to
ClassLinker::EnsureInitialized.

Change-Id: I8b3e2bdd927fd72c19fbee68f0ba511ad53887c0
diff --git a/src/class_linker.cc b/src/class_linker.cc
index a8281a3..570d797 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -1179,7 +1179,9 @@
 
 bool ClassLinker::InitializeClass(Class* klass) {
   CHECK(klass->GetStatus() == Class::kStatusResolved ||
-      klass->GetStatus() == Class::kStatusError) << klass->GetStatus();
+      klass->GetStatus() == Class::kStatusInitializing ||
+      klass->GetStatus() == Class::kStatusError)
+          << PrettyDescriptor(klass->GetDescriptor()) << " is " << klass->GetStatus();
 
   Thread* self = Thread::Current();
 
@@ -1211,9 +1213,9 @@
     }
 
     while (klass->GetStatus() == Class::kStatusInitializing) {
-      // we caught somebody else in the act; was it us?
+      // We caught somebody else in the act; was it us?
       if (klass->GetClinitThreadId() == self->GetTid()) {
-        LG << "recursive <clinit>";
+        // Yes. That's fine.
         return true;
       }