Skip to content
This repository has been archived by the owner on Oct 23, 2023. It is now read-only.

varmap can cause crashes in multithreaded programs #1343

Open
amol- opened this issue Jan 7, 2019 · 0 comments
Open

varmap can cause crashes in multithreaded programs #1343

amol- opened this issue Jan 7, 2019 · 0 comments

Comments

@amol-
Copy link

amol- commented Jan 7, 2019

As varmap uses iteritems:

for k, v in iteritems(var))

It can lead to crashes under multithreaded programs that might modify the dictionary variables concurrently while a message is being reported.

File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/base.py", line 799, in captureMessage
  return self.capture('raven.events.Message', message=message, **kwargs)
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/base.py", line 641, in capture
  **kwargs)
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/base.py", line 476, in build_msg
  data.update(processor.process(data))
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/processors.py", line 39, in process
  data['extra'] = self.filter_extra(data['extra'])
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/processors.py", line 135, in filter_extra
  return varmap(self.sanitize, data)
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/utils/__init__.py", line 52, in varmap
  for k, v in iteritems(var))
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/utils/__init__.py", line 52, in <genexpr>
  for k, v in iteritems(var))
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/utils/__init__.py", line 47, in varmap
  ret = [varmap(func, f, context, name) for f in var]
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/utils/__init__.py", line 52, in varmap
  for k, v in iteritems(var))
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/utils/__init__.py", line 52, in <genexpr>
  for k, v in iteritems(var))
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/utils/__init__.py", line 52, in varmap
  for k, v in iteritems(var))
File "/var/lib/crunch.io/venv/lib/python2.7/site-packages/raven/utils/__init__.py", line 51, in <genexpr>
  ret = dict((k, varmap(func, v, context, k))
RuntimeError: dictionary changed size during iteration
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant