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
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.