Skip to content

Instantly share code, notes, and snippets.

@k4nar
Created October 24, 2023 14:01
Show Gist options
  • Save k4nar/f525e690a6f1f73ee74d8b878e56746d to your computer and use it in GitHub Desktop.
Save k4nar/f525e690a6f1f73ee74d8b878e56746d to your computer and use it in GitHub Desktop.
See what happens when a thread segfault in Python
import faulthandler
import threading
import time
def oups():
import ctypes
# Segfault!
ctypes.string_at(0)
def wait_and_die():
time.sleep(0.5)
oups()
faulthandler.enable()
threads = [
threading.Thread(target=time.sleep, args=(10,)),
threading.Thread(target=wait_and_die),
threading.Thread(target=time.sleep, args=(10,)),
threading.Thread(target=time.sleep, args=(10,)),
]
for thread in threads:
thread.start()
for thread in threads:
thread.join(
@k4nar
Copy link
Author

k4nar commented Oct 24, 2023

Output:

$ python fault.py
Fatal Python error: Segmentation fault

Thread 0x00007efcaaffd6c0 (most recent call first):
  File "/usr/lib/python3.11/threading.py", line 975 in run
  File "/usr/lib/python3.11/threading.py", line 1038 in _bootstrap_inner
  File "/usr/lib/python3.11/threading.py", line 995 in _bootstrap

Thread 0x00007efcab7fe6c0 (most recent call first):
  File "/usr/lib/python3.11/threading.py", line 975 in run
  File "/usr/lib/python3.11/threading.py", line 1038 in _bootstrap_inner
  File "/usr/lib/python3.11/threading.py", line 995 in _bootstrap

Current thread 0x00007efcabfff6c0 (most recent call first):
  File "/usr/lib/python3.11/ctypes/__init__.py", line 519 in string_at
  File "/home/yannick/Alma/main/fault.py", line 10 in oups
  File "/home/yannick/Alma/main/fault.py", line 15 in wait_and_die
  File "/usr/lib/python3.11/threading.py", line 975 in run
  File "/usr/lib/python3.11/threading.py", line 1038 in _bootstrap_inner
  File "/usr/lib/python3.11/threading.py", line 995 in _bootstrap

Thread 0x00007efcb0eff6c0 (most recent call first):
  File "/usr/lib/python3.11/threading.py", line 975 in run
  File "/usr/lib/python3.11/threading.py", line 1038 in _bootstrap_inner
  File "/usr/lib/python3.11/threading.py", line 995 in _bootstrap

Thread 0x00007efcb1ca0740 (most recent call first):
  File "/usr/lib/python3.11/threading.py", line 1132 in _wait_for_tstate_lock
  File "/usr/lib/python3.11/threading.py", line 1112 in join
  File "/home/yannick/Alma/main/fault.py", line 31 in <module>
[1]    173360 segmentation fault (core dumped)  python fault.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment