Skip to content

Commit

Permalink
issue-25872: Fix KeyError using linecache from multiple threads (pyth…
Browse files Browse the repository at this point in the history
…onGH-18007)

The crash that this fixes occurs when using traceback and other modules from multiple threads; 
del cache[filename] can raise a KeyError.
  • Loading branch information
mgraczyk authored May 13, 2020
1 parent 97e1568 commit d72ea60
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions Lib/linecache.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -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 []

Expand Down

0 comments on commit d72ea60

Please sign in to comment.