+ /*
+ * We must release the thread info suspend lock after doing
+ * the thread handshake. Otherwise, if the GC stops the world
+ * and a thread is in the process of starting up, but has not
+ * yet registered (it's not in the thread_list), it is
+ * possible that the thread does register while the world is
+ * stopped. When restarting the GC will then try to restart
+ * said thread, but since it never got the suspend signal, it
+ * cannot answer the restart signal, so a deadlock results.
+ */
+ release_gc_locks ();
+
+ sgen_try_free_some_memory = TRUE;