diff --git a/docs/ansible_detailed.rst b/docs/ansible_detailed.rst
index dd569a76..449771b8 100644
--- a/docs/ansible_detailed.rst
+++ b/docs/ansible_detailed.rst
@@ -1248,18 +1248,17 @@ with ``-vvv``.
However, certain controller hangs may render ``MITOGEN_DUMP_THREAD_STACKS``
ineffective, or occur too infrequently for interactive reproduction. In these
-cases `faulthandler `_ may be used:
+cases :py:mod:`faulthandler` may be used with Python >= 3.3:
-1. For Python 2, ``pip install faulthandler``. This is unnecessary on Python 3.
-2. Once the hang occurs, observe the process tree using ``pstree`` or ``ps
+1. Once the hang occurs, observe the process tree using ``pstree`` or ``ps
--forest``.
-3. The most likely process to be hung is the connection multiplexer, which can
+2. The most likely process to be hung is the connection multiplexer, which can
easily be identified as the parent of all SSH client processes.
-4. Send ``kill -SEGV `` to the multiplexer PID, causing it to print all
+3. Send ``kill -SEGV `` to the multiplexer PID, causing it to print all
thread stacks.
-5. `File a bug `_ including a copy
- of the stacks, along with a description of the last task executing prior to
- the hang.
+4. `File a bug `_
+ including a copy of the stacks and a description of the last task executing
+ before the hang
It is possible the hang occurred in a process on a target. If ``strace`` is
available, look for the host name not listed in Ansible output as reporting a
diff --git a/docs/changelog.rst b/docs/changelog.rst
index b4ae9df5..da5cc5e4 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -27,6 +27,7 @@ v0.3.4.dev0
was made to enqueue a message with a Broker that has already exitted`. However it may result in
resource leaks.
* :gh:issue:`659` Removed :mod:`mitogen.compat.simplejson`, not needed with Python 2.7+, contained Python 3.x syntax errors
+* :gh:issue:`983` CI: Removed PyPI faulthandler requirement from tests
v0.3.3 (2022-06-03)
-------------------
diff --git a/tests/requirements.txt b/tests/requirements.txt
index 0e9a0f0a..7301bee1 100644
--- a/tests/requirements.txt
+++ b/tests/requirements.txt
@@ -2,7 +2,6 @@ psutil==5.4.8
coverage==5.5; python_version < '3.7'
coverage==6.4.4; python_version >= '3.7'
Django==1.6.11 # Last version supporting 2.6.
-faulthandler==3.2; python_version < '3.3'
mock==2.0.0
pytz==2018.5
cffi==1.14.3 # Random pin to try and fix pyparser==2.18 not having effect