Upgrading to RHEL 6.6, 7.0 or 7.1 may result in an application, using futexes, appearing to stall in futex_wait()

Solution Verified - Updated -

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 or strace 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 of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In