﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
22017	RuntimeError: dictionary changed size during iteration	Ceesjan Luiten	nobody	"This bug report is identical to #21049 but for Django 1.7.

I run Django 1.7a2 with a Python3 virtualenv. Occasionally the runserver crashes with the following stacktrace:

{{{
System check identified no issues (0 silenced).
Traceback (most recent call last):
  File ""manage.py"", line 10, in <module>
    execute_from_command_line(sys.argv)
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/core/management/__init__.py"", line 427, in execute_from_command_line
    utility.execute()
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/core/management/__init__.py"", line 419, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/core/management/base.py"", line 287, in run_from_argv
    self.execute(*args, **options.__dict__)
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/core/management/base.py"", line 336, in execute
    output = self.handle(*args, **options)
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/core/management/commands/runserver.py"", line 81, in handle
    self.run(*args, **options)
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/core/management/commands/runserver.py"", line 90, in run
    autoreload.main(self.inner_run, args, options)
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/utils/autoreload.py"", line 267, in main
    reloader(wrapped_main_func, args, kwargs)
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/utils/autoreload.py"", line 233, in python_reloader
    reloader_thread()
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/utils/autoreload.py"", line 212, in reloader_thread
    if fn():
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/utils/autoreload.py"", line 139, in inotify_code_changed
    update_watch()
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/utils/autoreload.py"", line 132, in update_watch
    for path in gen_filenames():
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/utils/autoreload.py"", line 84, in gen_filenames
    filenames = [filename.__file__ for filename in sys.modules.values()
  File ""/home/quinox/projecten/deadlines/virtual/lib/python3.3/site-packages/django/utils/autoreload.py"", line 84, in <listcomp>
    filenames = [filename.__file__ for filename in sys.modules.values()
RuntimeError: dictionary changed size during iteration
}}}

The issue shows up sporadically, it can usually be triggered within 10 minutes by running the following command in a shell:
{{{
#!bash
while true ; do touch project/xxx/models.py ; sleep 1s; done
}}}


The fix as suggested in #21049 seems to fix the issue, I haven't seen the runserver crash since I modified `django/utils/autoreload.py` lines 84-85 from:
{{{
#!python
filenames = [filename.__file__ for filename in sys.modules.values()
            if hasattr(filename, '__file__')]
}}}
to
{{{
#!python
filenames = [filename.__file__ for filename in list(sys.modules.values())
            if hasattr(filename, '__file__')]
}}}"	Bug	closed	Python 3	1.7-alpha-1	Normal	fixed		djangoproject.com@…	Accepted	1	0	0	0	1	0
