Public bug reported:

== Comment: #0 - Tulio Magno Quites Machado Filho - 2016-02-23 12:47:09 ==
---Problem Description---
This is happening on Ubuntu 14.04.3.
User is creating stack structure using C++ transactional memory extension:

    int Pop(int)
    {
        int ret = 0;
        __transaction_atomic
        {
                if(!stack_.empty())
                {
                        ret = stack_.top();
                        stack_.pop();
                } else
                        ret = -1;
        }
        return ret;
    }

While evaluating if(!stack_.empty()), this code calls a libitm function (GCC 
code), which calls malloc (glibc code) which ends up calling futex (a syscall).
A syscall inside a transaction is forbidden by the kernel, but there is nothing 
the user can do to avoid this syscall.

This will hang the user application inside the malloc(), which would be
waiting for the futex to return.

Ubuntu 14.04 provides glibc 2.19, which is too old to know about HTM.
And this is probably happening with other libraries as well.

Backporting commit b4b56f9e would solve this issue.
  
---uname output---
Linux 3.13.0-66-generic #108-Ubuntu SMP Wed Oct 7 16:06:09 UTC 2015 ppc64le 
ppc64le ppc64le GNU/Linux
 
---Steps to Reproduce---
 Start a transaction, make a syscall.
 
== Comment: #1 - Wei Guo - 2016-02-24 02:33:03 ==
I already verfied that kernel with patch b4b56f9e (on Ubuntu14.04) will work.

== Comment: #2 - Wei Guo - 2016-02-26 04:20:37 ==
Backport patch for commit b4b56f9e is attached. The patch is based on tag 
Ubuntu-lts-3.19.0-25.26_14.04.1.

Tested based on Ubuntu 14.04.4 LTS ( 3.19.0-25-generic).

** Affects: linux (Ubuntu)
     Importance: Undecided
     Assignee: Taco Screen team (taco-screen-team)
         Status: New


** Tags: architecture-ppc64le bugnameltc-137710 severity-medium 
targetmilestone-inin14044

** Tags added: architecture-ppc64le bugnameltc-137710 severity-medium
targetmilestone-inin14044

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1572624

Title:
  Backport patch to abort syscalls in active transactions

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1572624/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to