The server failed to send a POSIX signal to a thread (pthread_kill), indicating an OS-level or resource issue that blocks thread management.
MySQL Error 93: EE_PTHREAD_KILL_FAILED occurs when the server cannot signal an internal thread via pthread_kill. Check OS limits, thread state, and upgrade to 8.0.31+ for the official patch.
pthread_kill(thread_id:%lu, signal:%s) returned '%s'. EE_PTHREAD_KILL_FAILED was added in 8.0.31.
MySQL error 93, condition EE_PTHREAD_KILL_FAILED, is raised when the server calls pthread_kill(thread_id, signal) and the operating system returns an error. The server therefore cannot signal, suspend, or terminate the targeted thread.
The problem appears in MySQL 8.0.31 or later, because that version introduced explicit detection for this failure.
If unresolved, transactions may hang, shutdown can stall, or the instance can crash.
Most cases trace back to invalid thread IDs, zombie threads, exhausted OS signal queues, or restrictive ulimit settings. Kernel bugs or aggressive security modules can also block signals.
Identify the thread and signal that failed using MySQL error log details. Verify with SHOW PROCESSLIST;
whether the thread still exists.
If it is gone, a stale ID caused the issue.
Next, inspect OS limits: ulimit -a
for open files, pending signals, and max user processes. Raise limits or tune /etc/security/limits.conf
if necessary.
When error 93 appears during shutdown, perform a controlled restart and reduce innodb_kill_idle_transaction
aggressiveness.
For high-concurrency workloads, lower max_connections
or enable thread_pool
to cap active worker threads.
If the error repeats after upgrade, rebuild MySQL with upgraded glibc or patch to the newest 8.0 release where Oracle has addressed race conditions in pthread_kill handling.
Monitor thread counts with information_schema.PROCESSLIST
, keep OS packages current, and apply MySQL updates promptly.
Use Galaxy’s query profiler to detect runaway queries early and prevent thread saturation.
Errors 95 (EE_THREAD_KILL_FAILED) and 96 (EE_PTHREAD_SIGMASK_FAILED) often surface together. They share similar root causes and respond to the same OS limit checks and version upgrades.
.
The thread referenced by pthread_kill has already exited, so the kernel returns ESRCH and MySQL raises error 93.
Heavy load can hit the kernel limit for queued signals, causing pthread_kill to fail with EAGAIN.
Low values for max user processes or pending signals prevent new signal delivery and trigger this error.
Outdated kernels and libraries contain race conditions that mis-handle pthread_kill for rapidly exiting threads.
SELinux or AppArmor profiles that forbid specific signals can block pthread_kill calls inside mysqld.
.
No. The error concerns thread signaling, not storage. Still, restart the server to avoid pending locks.
Sporadic entries under extreme load are usually harmless, but frequent events warrant investigation of OS limits and thread pool settings.
Both are possible. MySQL 8.0.31+ flags the condition, while some older kernels mishandle pthread_kill. Always update both layers.
Galaxy’s profiler highlights long-running queries early, helping you cap problematic threads and prevent error 93 before it surfaces.