bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__ (GH-7080)

(cherry picked from commit 35230d08e09de4e2e52658d5cb09e5b0ca965418)

Co-authored-by: Yury Selivanov <yury@magic.io>
diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c
index 6d7249a..c4d1903 100644
--- a/Modules/_asynciomodule.c
+++ b/Modules/_asynciomodule.c
@@ -501,7 +501,13 @@
     if (is_true < 0) {
         return -1;
     }
-    if (is_true) {
+    if (is_true && !_Py_IsFinalizing()) {
+        /* Only try to capture the traceback if the interpreter is not being
+           finalized.  The original motivation to add a `_Py_IsFinalizing()`
+           call was to prevent SIGSEGV when a Future is created in a __del__
+           method, which is called during the interpreter shutdown and the
+           traceback module is already unloaded.
+        */
         fut->fut_source_tb = _PyObject_CallNoArg(traceback_extract_stack);
         if (fut->fut_source_tb == NULL) {
             return -1;