The faulthandler module is invaluable for tracking down segfaults in native 
code, however it is really lacking the ability to add some kind of useful 
breadcumb to aide debugging. Imagine you are running a large-scale distributed 
job over tens of millions of images and a single one causes opencv to segfault 
reliably. This can be very difficult to track down.

It would be very useful to be able to add a string (limited by size) via the 
faulthandler module that is outputted along with the traceback. For example:

```
for image in millions_of_images():
    faulthandler.context(f'{image.id=}')
    segfaulty_function(image)

# Or maybe:
for image in millions_of_images():
    with faulthandler.context(f'{image.id=}'):
        segfaulty_function(image)
```

The traceback might be something like:

```
Fatal Python error: Segmentation fault

Current thread 0x00007fb899f39700 (most recent call first):
  .... (traceback)
Segmentation fault
Context: image_id=foo
```

You could of course add logging to this function to print out the image ID 
before you run it through `segfaulty_function`, but if you're running this at 
high volume on a huge number of machines, this becomes a bit of an overhead, 
and it doesn't handle multiple threads running the function well.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/BG36W24KEEX4YJA7CZ3PGW4ISZGVXMH6/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to