Upgrading to RHEL 6.6, 7.0 or 7.1 may result in an application, using futexes, appearing to stall in futex_wait()
Issue
- Softlockup with pThreads, Mutexes on Haswell CPUs and PowerPC CPUs (but may not be limited to just these)
- After upgrading to Red Hat Enterprise Linux 6.6 (specifically 2.6.32-504 up to and including 2.6.32-504.12.2) may result in an application hang.
- Cannot get a thread dump using
kill -3
. - Running
kill -3
doesn't respond. - Inspecting
/proc/
shows all threads are stuck waiting on a futex. For example:
Where nnnn = the PID # of the parent task in question
mmmm = the PID # of the thread task
Note. Under the parent /proc/nnnn/task structure you will see the PID's of all of the threads including the parents number repeated.
cat /proc/nnnn/task/mmmm/stack
[<ffffffff810b226a>] futex_wait_queue_me+0xba/0xf0
[<ffffffff810b33a0>] futex_wait+0x1c0/0x310
[<ffffffff810b4c91>] do_futex+0x121/0xae0
[<ffffffff810b56cb>] sys_futex+0x7b/0x170
[<ffffffff8100b072>] system_call_fastpath+0x16/0x1b
[<ffffffffffffffff>] 0xffffffffffffffff
- Attaching
gdb
orstrace
causes the application to wake up and continue processing.
Environment
- Red Hat Enterprise Linux (RHEL) 6.6, 7.0 and 7.1
-
Application uses syscall FUTEX with Private Userspace futex locking
- Does not affect Shared or Inode Futex locking
-
Other possible packages may include:
- IBM JDK 6 32-bit
- Oracle JDK 7 64-bit
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.