diff --git a/src/c/misc_thread_common.h b/src/c/misc_thread_common.h index ca12d4d6..d8d81824 100644 --- a/src/c/misc_thread_common.h +++ b/src/c/misc_thread_common.h @@ -204,6 +204,10 @@ thread_canary_register(PyThreadState *tstate) if (tdict == NULL) goto ignore_error; + /* Give ThreadCanary_Type a valid metatype before instantiating it. */ + if (PyType_Ready(&ThreadCanary_Type) < 0) + goto ignore_error; + canary = PyObject_New(ThreadCanaryObj, &ThreadCanary_Type); //fprintf(stderr, "thread_canary_register(%p): tstate=%p tls=%p\n", canary, tstate, tls); if (canary == NULL)