issue-25872: Fix KeyError using linecache from multiple threads (GH-18007)

The crash that this fixes occurs when using traceback and other modules from multiple threads; 
del cache[filename] can raise a KeyError.
This commit is contained in:
Michael Graczyk 2020-05-13 17:41:57 -05:00 committed by GitHub
parent 97e1568325
commit d72ea60521
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 3 deletions

View File

@ -71,10 +71,10 @@ def checkcache(filename=None):
try:
stat = os.stat(fullname)
except OSError:
del cache[filename]
cache.pop(filename, None)
continue
if size != stat.st_size or mtime != stat.st_mtime:
del cache[filename]
cache.pop(filename, None)
def updatecache(filename, module_globals=None):
@ -84,7 +84,7 @@ def updatecache(filename, module_globals=None):
if filename in cache:
if len(cache[filename]) != 1:
del cache[filename]
cache.pop(filename, None)
if not filename or (filename.startswith('<') and filename.endswith('>')):
return []