Index: src/runtime/class.m ================================================================== --- src/runtime/class.m +++ src/runtime/class.m @@ -928,10 +928,12 @@ void objc_unregisterClass(Class class) { static SEL unloadSel = NULL; + objc_globalMutex_lock(); + if (unloadSel == NULL) unloadSel = sel_registerName("unload"); while (class->subclassList != NULL && class->subclassList[0] != Nil) objc_unregisterClass(class->subclassList[0]); @@ -944,10 +946,12 @@ if (strcmp(class_getName(class), "Protocol") != 0) classesCount--; unregisterClass(class); unregisterClass(class->isa); + + objc_globalMutex_unlock(); } void objc_unregisterAllClasses(void) {