Opened 9 years ago
Closed 9 years ago
#26738 closed Uncategorized (invalid)
Window resize crashes runserver --noreload with pdb on linux
| Reported by: | Dan Davison | Owned by: | nobody |
|---|---|---|---|
| Component: | HTTP handling | Version: | dev |
| Severity: | Normal | Keywords: | runserver pdb noreload resize linux |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Resizing the terminal window while pdb is active in an HTTP handler thread using --noreload on linux causes the kernel to raise an error condition that crashes django (true for current HEAD 8f50ff5b and e.g. 1.6). To reproduce this:
- Put a
pdb.set_trace()call in a view function. - On linux, start the server with
--noreload. - Send a request to the URL. The
pdbprompt should now be in effect in the terminal. - Resize the terminal window. This will cause django to crash with
select.error: (4, 'Interrupted system call')as in the traceback below.
The bug only affects --noreload. It does not occur with --noreload --nothreading.
(Pdb) Traceback (most recent call last):
File "exampledev/manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/vagrant/django-examples/django/django/core/management/__init__.py", line 367, in execute_from_command_line
utility.execute()
File "/vagrant/django-examples/django/django/core/management/__init__.py", line 359, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/vagrant/django-examples/django/django/core/management/base.py", line 305, in run_from_argv
self.execute(*args, **cmd_options)
File "/vagrant/django-examples/django/django/core/management/commands/runserver.py", line 58, in execute
super(Command, self).execute(*args, **options)
File "/vagrant/django-examples/django/django/core/management/base.py", line 356, in execute
output = self.handle(*args, **options)
File "/vagrant/django-examples/django/django/core/management/commands/runserver.py", line 97, in handle
self.run(**options)
File "/vagrant/django-examples/django/django/core/management/commands/runserver.py", line 108, in run
self.inner_run(None, **options)
File "/vagrant/django-examples/django/django/core/management/commands/runserver.py", line 144, in inner_run
ipv6=self.use_ipv6, threading=threading)
File "/vagrant/django-examples/django/django/core/servers/basehttp.py", line 193, in run
httpd.serve_forever()
File "/usr/lib/python2.7/SocketServer.py", line 225, in serve_forever
r, w, e = select.select([self], [], [], poll_interval)
select.error: (4, 'Interrupted system call')
Note:
See TracTickets
for help on using tickets.
Actually, I can't reproduce this in a different VM, so I'm going to close this as
invalid. It's maybe of interest that the error was only seen inrunserver --noreloadand not in vanillarunserver.