diff --git a/yt_dlp/extractor/common.py b/yt_dlp/extractor/common.py
index f86e7cb3e9..5b7de12968 100644
--- a/yt_dlp/extractor/common.py
+++ b/yt_dlp/extractor/common.py
@@ -749,7 +749,7 @@ class InfoExtractor(object):
 
             errmsg = '%s: %s' % (errnote, error_to_compat_str(err))
             if fatal:
-                raise ExtractorError(errmsg, sys.exc_info()[2], cause=err)
+                raise ExtractorError(errmsg, cause=err)
             else:
                 self.report_warning(errmsg)
                 return False
diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py
index 8256d543e4..9406eb834d 100644
--- a/yt_dlp/utils.py
+++ b/yt_dlp/utils.py
@@ -1076,9 +1076,10 @@ class ExtractorError(YoutubeDLError):
             '' if expected else bug_reports_message())))
 
     def format_traceback(self):
-        if self.traceback is None:
-            return None
-        return ''.join(traceback.format_tb(self.traceback))
+        return join_nonempty(
+            self.traceback and ''.join(traceback.format_tb(self.traceback)),
+            self.cause and ''.join(traceback.format_exception(self.cause)[1:]),
+            delim='\n') or None
 
 
 class UnsupportedError(ExtractorError):