#28485: Stack trace report silently drops frames without source code
---------------------------------------------+------------------------
               Reporter:  Martin von Gagern  |          Owner:  (none)
                   Type:  Bug                |         Status:  new
              Component:  Error reporting    |        Version:  master
               Severity:  Normal             |       Keywords:
           Triage Stage:  Unreviewed         |      Has patch:  1
    Needs documentation:  0                  |    Needs tests:  0
Patch needs improvement:  0                  |  Easy pickings:  0
                  UI/UX:  0                  |
---------------------------------------------+------------------------
 Recently I encountered a strange situation: I got an exception for a bad
 method signature, but the stack trace shown by Django in the error
 response did not even mention the method in question. I added a
 {{{traceback.print_exc()}}} to the last report function, and there on
 standard error I could see some more frames. They were without source
 code, but with file name, line number and method name. The reason why they
 were without source code was that their source was not directly accessible
 as a file on disk. They had been loaded via a custom loading procedure.
 The fact that there was no indication at all in the report was quite
 confusing.

 In [https://github.com/django/django/pull/8880 GitHub #8880] I'm proposing
 a fix for this. If we fail to load the source file, we no longer drop the
 frame but present what information we have, namely file name, line number
 and function name, plus a warning about the unavability of the source file
 in place of the actual source test.

 Note that having a [https://www.python.org/dev/peps/pep-0302/#optional-
 extensions-to-the-importer-protocol PEP 302] {{{__loader__}}} to the
 generated module to provide a {{{get_source}}} method is a way of
 supporting source code even for generated or custom-loaded code, and it is
 supported by Django. So this change here does not affect all generated or
 custom-loaded code, only those parts which don't make use of such a
 loader.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/28485>
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 post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/049.9b6a92537db1eec5a9ba4795051dab91%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to