fix Thread.ident when it is the main thread or a dummy thread #5632
diff --git a/Lib/threading.py b/Lib/threading.py
index 28a8a2f..13409db 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -500,9 +500,12 @@
                 return
             raise
 
+    def _set_ident(self):
+        self.__ident = _get_ident()
+
     def __bootstrap_inner(self):
         try:
-            self.__ident = _get_ident()
+            self._set_ident()
             self.__started.set()
             with _active_limbo_lock:
                 _active[self.__ident] = self
@@ -733,6 +736,7 @@
     def __init__(self):
         Thread.__init__(self, name="MainThread")
         self._Thread__started.set()
+        self._set_ident()
         with _active_limbo_lock:
             _active[_get_ident()] = self
 
@@ -778,6 +782,7 @@
         del self._Thread__block
 
         self._Thread__started.set()
+        self._set_ident()
         with _active_limbo_lock:
             _active[_get_ident()] = self