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.
(cherry picked from commit d72ea60)

Co-authored-by: Michael Graczyk <mgraczyk@users.noreply.github.com>
  • Loading branch information
mgraczyk authored and miss-islington committed May 13, 2020
1 parent 35b8a4d commit 9574371
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 @@ -73,10 +73,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 @@ -86,7 +86,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 9574371

Please sign in to comment.