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, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content