#32223: Path.resolve(strict=True) can raise a PermissionError in autoreloader.
-------------------------------------+-------------------------------------
               Reporter:  Mariusz    |          Owner:  nobody
  Felisiak                           |
                   Type:  Bug        |         Status:  new
              Component:  Core       |        Version:  3.1
  (Management commands)              |
               Severity:  Normal     |       Keywords:
           Triage Stage:  Accepted   |      Has patch:  0
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 Using `Path.resolve(strict=True)` can cause permission errors when users
 don't have permissions to all intermediate directories in a Django
 installation path, see:
 {{{
 Traceback (most recent call last):
   File "manage.py", line 21, in <module>
     main()
   File "manage.py", line 17, in main
     execute_from_command_line(sys.argv)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/__init__.py", line 401, in
 execute_from_command_line
     utility.execute()
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/__init__.py", line 395, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/base.py", line 328, in run_from_argv
     self.execute(*args, **cmd_options)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/commands/runserver.py", line 60, in
 execute
     super().execute(*args, **options)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/base.py", line 369, in execute
     output = self.handle(*args, **options)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/commands/runserver.py", line 95, in handle
     self.run(**options)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/commands/runserver.py", line 102, in run
     autoreload.run_with_reloader(self.inner_run, **options)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 599, in run_with_reloader
     start_django(reloader, main_func, *args, **kwargs)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 584, in start_django
     reloader.run(django_main_thread)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 299, in run
     self.run_loop()
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 305, in run_loop
     next(ticker)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 345, in tick
     for filepath, mtime in self.snapshot_files():
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 361, in snapshot_files
     for file in self.watched_files():
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 260, in watched_files
     yield from iter_all_python_module_files()
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 105, in
 iter_all_python_module_files
     return iter_modules_and_files(modules, frozenset(_error_files))
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 141, in iter_modules_and_files
     resolved_path = path.resolve(strict=True).absolute()
   File "/usr/local/lib/python3.8/pathlib.py", line 1180, in resolve
     s = self._flavour.resolve(self, strict=strict)
   File "/usr/local/lib/python3.8/pathlib.py", line 362, in resolve
     return _resolve(base, str(path)) or sep
   File "/usr/local/lib/python3.8/pathlib.py", line 346, in _resolve
     target = accessor.readlink(newpath)
   File "/usr/local/lib/python3.8/pathlib.py", line 451, in readlink
     return os.readlink(path)
 PermissionError: [Errno 13] Permission denied: '/usr'
 }}}

 Regression in e28671187903e6aca2428374fdd504fca3032aee (Django 3.0).

 Thanks Jakub SzafraƄski for the
 [https://code.djangoproject.com/ticket/31912#comment:15 report].

-- 
Ticket URL: <https://code.djangoproject.com/ticket/32223>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/050.1db9499ab4e6a4c6154d5868645007d0%40djangoproject.com.

Reply via email to