public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM
@ 2013-02-08  0:01 katsuki.uwatoko at toshiba dot co.jp
  2014-02-08  1:58 ` [Bug nptl/15119] [arm] " jsm28 at gcc dot gnu.org
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: katsuki.uwatoko at toshiba dot co.jp @ 2013-02-08  0:01 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=15119

             Bug #: 15119
           Summary: unnecessary busy loop in __lll_timedlock_wait on ARM
           Product: glibc
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ports
        AssignedTo: unassigned@sourceware.org
        ReportedBy: katsuki.uwatoko@toshiba.co.jp
                CC: carlos@redhat.com, roland@gnu.org
    Classification: Unclassified


Created attachment 6856
  --> http://sourceware.org/bugzilla/attachment.cgi?id=6856
patch for Avoid unneecssary busy loop in __lll_timedlock_wait on ARM.

The following sequence causes unnecessary busy loop. 

"A thread" gets the lock. (futex = 1)
"B thread" tries to get the lock, and has not called futex syscall yet. (futex
= 2)
"A thread" releases the lock (futex = 0)
"C thread" gets the lock, and does not call futex syscall because of futex=0
(futex = 1)
"B thread" calls futex syscall, and returns with an error.
           Because futex syscall in Linux Kernel checks if the val is changed 
           from 2, which is the 3rd arg of the syscall at futex_wait_setup(),
           but in this case futex is 1.
"B thread" tries to get the lock in userspace but cannot get it 
           because futex is not 0.
           After all the thread keeps calling futex syscall 
           until "C thread" will release it (futex = 0) or timeout.

Therefore I think that the value should be set 2 in every loop 
the same as __lll_lock_wait_private, and attached a patch for this issue.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug nptl/15119] [arm] unnecessary busy loop in __lll_timedlock_wait on ARM
  2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
@ 2014-02-08  1:58 ` jsm28 at gcc dot gnu.org
  2014-04-18  5:34 ` maxim.kuvyrkov at gmail dot com
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: jsm28 at gcc dot gnu.org @ 2014-02-08  1:58 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=15119

Joseph Myers <jsm28 at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |drepper.fsp at gmail dot com
          Component|ports                       |nptl
               Host|                            |arm*-*-linux*
            Summary|unnecessary busy loop in    |[arm] unnecessary busy loop
                   |__lll_timedlock_wait on ARM |in __lll_timedlock_wait on
                   |                            |ARM

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug nptl/15119] [arm] unnecessary busy loop in __lll_timedlock_wait on ARM
  2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
  2014-02-08  1:58 ` [Bug nptl/15119] [arm] " jsm28 at gcc dot gnu.org
@ 2014-04-18  5:34 ` maxim.kuvyrkov at gmail dot com
  2014-04-24 14:32 ` bernie.ogden at linaro dot org
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: maxim.kuvyrkov at gmail dot com @ 2014-04-18  5:34 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=15119

Maxim Kuvyrkov <maxim.kuvyrkov at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |maxim.kuvyrkov at gmail dot com
           Assignee|unassigned at sourceware dot org   |maxim.kuvyrkov at gmail dot com

--- Comment #1 from Maxim Kuvyrkov <maxim.kuvyrkov at gmail dot com> ---
Bernie Ogden (bernie.ogden@linaro.org) is working on unifying ARM's and other
architectures' lowlevellock.c to use generic linux version -- thus fixing this
bug.

Assign to myself as Bernie doesn't have a Glibc account yet.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug nptl/15119] [arm] unnecessary busy loop in __lll_timedlock_wait on ARM
  2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
  2014-02-08  1:58 ` [Bug nptl/15119] [arm] " jsm28 at gcc dot gnu.org
  2014-04-18  5:34 ` maxim.kuvyrkov at gmail dot com
@ 2014-04-24 14:32 ` bernie.ogden at linaro dot org
  2014-05-01 13:01 ` bernie.ogden at linaro dot org
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: bernie.ogden at linaro dot org @ 2014-04-24 14:32 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=15119

--- Comment #2 from Bernard Ogden <bernie.ogden at linaro dot org> ---
Analysis at https://sourceware.org/ml/libc-ports/2013-02/msg00021.html makes
clear that switching to the generic lowlevellock.c will fix this problem for
arm. Neither arm nor hppa appear to contain any significant differences from
the generic lowlevellock.c, so we can eliminate both of these platform specific
files.

This leaves sparc as the only platform with its own lowlevellock.c. In this
case the locking structures are different, so we leave this one alone.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug nptl/15119] [arm] unnecessary busy loop in __lll_timedlock_wait on ARM
  2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
                   ` (2 preceding siblings ...)
  2014-04-24 14:32 ` bernie.ogden at linaro dot org
@ 2014-05-01 13:01 ` bernie.ogden at linaro dot org
  2014-05-01 13:28 ` cvs-commit at gcc dot gnu.org
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: bernie.ogden at linaro dot org @ 2014-05-01 13:01 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=15119

Bernard Ogden <bernie.ogden at linaro dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://sourceware.org/bugz
                   |                            |illa/show_bug.cgi?id=16892

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug nptl/15119] [arm] unnecessary busy loop in __lll_timedlock_wait on ARM
  2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
                   ` (3 preceding siblings ...)
  2014-05-01 13:01 ` bernie.ogden at linaro dot org
@ 2014-05-01 13:28 ` cvs-commit at gcc dot gnu.org
  2014-05-01 15:28 ` will.newton at gmail dot com
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2014-05-01 13:28 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=15119

--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  6d96f5e4c0500b19d1c2f4edc37536d2bc592260 (commit)
      from  4fa262fa9e8836f2e513e3ea56797dab2d75e6de (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=6d96f5e4c0500b19d1c2f4edc37536d2bc592260

commit 6d96f5e4c0500b19d1c2f4edc37536d2bc592260
Author: Will Newton <will.newton@linaro.org>
Date:   Thu May 1 14:25:44 2014 +0100

    ARM: Remove lowlevellock.c

    lowlevellock.c for arm differs from the generic lowlevellock.c only in
    insignificant ways, so can be removed. Happily, this fixes BZ 15119
    (unnecessary busy loop in __lll_timedlock_wait on arm).

    The notable differences between the arm and generic implementations are:

    1) arm __lll_timedlock_wait has a fast path out if futex has been set
    to 0 between since the function was called. This seems unlikely to
    happen very often, so it seems at worst harmless to lose this fast
    path.

    2) Some function in arm's lowlevellock.c set futex to 2 if it was 1.
    The generic version always sets the futex to 2. As futex can only be
    0, 1 or 2 on entry into these functions, the behaviour is equivalent.
    (If the futex manages to be 0 on entry then we've just lost another
    unlikely fast path out.)

    There are no test suite regressions.

    Note that hppa and sparc also have their own lowlevellock.c. I believe
    hppa can also be removed, so I'll send a separate patch for that
    shortly. sparc's seems to be genuinely needed as it uses a different
    locking structure.

    Also note that the analysis at
    https://sourceware.org/ml/libc-ports/2013-02/msg00021.html indicates a
    further locking performance bug to fix - I've got a partial patch for
    that which I can submit once I've finished testing.

    2014-05-01  Bernard Ogden <bernie.ogden@linaro.org>

        [BZ #15119]
        * sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c: Remove file.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                       |    6 +
 sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c |  132 -----------------------
 2 files changed, 6 insertions(+), 132 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.c

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug nptl/15119] [arm] unnecessary busy loop in __lll_timedlock_wait on ARM
  2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
                   ` (4 preceding siblings ...)
  2014-05-01 13:28 ` cvs-commit at gcc dot gnu.org
@ 2014-05-01 15:28 ` will.newton at gmail dot com
  2014-05-02  1:36 ` maxim.kuvyrkov at linaro dot org
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: will.newton at gmail dot com @ 2014-05-01 15:28 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=15119

Will Newton <will.newton at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |will.newton at gmail dot com
         Resolution|---                         |FIXED

--- Comment #4 from Will Newton <will.newton at gmail dot com> ---

Fixed in commit 6d96f5e4c0500b19d1c2f4edc37536d2bc592260

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug nptl/15119] [arm] unnecessary busy loop in __lll_timedlock_wait on ARM
  2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
                   ` (5 preceding siblings ...)
  2014-05-01 15:28 ` will.newton at gmail dot com
@ 2014-05-02  1:36 ` maxim.kuvyrkov at linaro dot org
  2014-05-02  7:48 ` will.newton at gmail dot com
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: maxim.kuvyrkov at linaro dot org @ 2014-05-02  1:36 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=15119

--- Comment #5 from maxim.kuvyrkov at linaro dot org ---
On May 2, 2014, at 1:28 AM, cvs-commit at gcc dot gnu.org
<sourceware-bugzilla@sourceware.org> wrote:

> 
> - Log -----------------------------------------------------------------
> https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=6d96f5e4c0500b19d1c2f4edc37536d2bc592260
> 
> commit 6d96f5e4c0500b19d1c2f4edc37536d2bc592260
> Author: Will Newton <will.newton@linaro.org>
> Date:   Thu May 1 14:25:44 2014 +0100
> 
>    ARM: Remove lowlevellock.c

Hi Will,

Please use --author= git commit option for future commits of patches from other
developers.  Various commit-tracking services give credit to people based on
Author tag.

Thank you,

--
Maxim Kuvyrkov
www.linaro.org

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug nptl/15119] [arm] unnecessary busy loop in __lll_timedlock_wait on ARM
  2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
                   ` (6 preceding siblings ...)
  2014-05-02  1:36 ` maxim.kuvyrkov at linaro dot org
@ 2014-05-02  7:48 ` will.newton at gmail dot com
  2014-06-10  3:25 ` cvs-commit at gcc dot gnu.org
  2014-06-13 18:53 ` fweimer at redhat dot com
  9 siblings, 0 replies; 11+ messages in thread
From: will.newton at gmail dot com @ 2014-05-02  7:48 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=15119

--- Comment #6 from Will Newton <will.newton at gmail dot com> ---
On Fri, May 2, 2014 at 2:36 AM, maxim.kuvyrkov at linaro dot org
<sourceware-bugzilla@sourceware.org> wrote:
> https://sourceware.org/bugzilla/show_bug.cgi?id=15119
>
> --- Comment #5 from maxim.kuvyrkov at linaro dot org ---
> On May 2, 2014, at 1:28 AM, cvs-commit at gcc dot gnu.org
> <sourceware-bugzilla@sourceware.org> wrote:
>
>>
>> - Log -----------------------------------------------------------------
>> https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=6d96f5e4c0500b19d1c2f4edc37536d2bc592260
>>
>> commit 6d96f5e4c0500b19d1c2f4edc37536d2bc592260
>> Author: Will Newton <will.newton@linaro.org>
>> Date:   Thu May 1 14:25:44 2014 +0100
>>
>>    ARM: Remove lowlevellock.c
>
> Hi Will,
>
> Please use --author= git commit option for future commits of patches from other
> developers.  Various commit-tracking services give credit to people based on
> Author tag.

Hi Maxim,

Yes, I am aware of the oversight, I realised as soon as I had pushed
it. Unfortunately its an immutable part of the history and cannot be
changed now.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug nptl/15119] [arm] unnecessary busy loop in __lll_timedlock_wait on ARM
  2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
                   ` (7 preceding siblings ...)
  2014-05-02  7:48 ` will.newton at gmail dot com
@ 2014-06-10  3:25 ` cvs-commit at gcc dot gnu.org
  2014-06-13 18:53 ` fweimer at redhat dot com
  9 siblings, 0 replies; 11+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2014-06-10  3:25 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=15119

--- Comment #7 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  2c3520d98d9773d9e092196c3c36150244eed1dd (commit)
      from  acaa4d24f507976d10a82dc31152eb912b59b4bc (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2c3520d98d9773d9e092196c3c36150244eed1dd

commit 2c3520d98d9773d9e092196c3c36150244eed1dd
Author: Bernard Ogden <bernie.ogden@linaro.org>
Date:   Mon Jun 9 23:22:20 2014 -0400

    hppa: Remove lowlevellock.c.

    The hppa port has no need of a custom lowlevellock.c, it should
    use the generic version which is updated and correct. This
    similarly fixes bug 15119 for hppa.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                        |    5 +
 sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c |  126 ----------------------
 2 files changed, 5 insertions(+), 126 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Bug nptl/15119] [arm] unnecessary busy loop in __lll_timedlock_wait on ARM
  2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
                   ` (8 preceding siblings ...)
  2014-06-10  3:25 ` cvs-commit at gcc dot gnu.org
@ 2014-06-13 18:53 ` fweimer at redhat dot com
  9 siblings, 0 replies; 11+ messages in thread
From: fweimer at redhat dot com @ 2014-06-13 18:53 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=15119

Florian Weimer <fweimer at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
              Flags|                            |security-

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2014-06-13 18:53 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-08  0:01 [Bug ports/15119] New: unnecessary busy loop in __lll_timedlock_wait on ARM katsuki.uwatoko at toshiba dot co.jp
2014-02-08  1:58 ` [Bug nptl/15119] [arm] " jsm28 at gcc dot gnu.org
2014-04-18  5:34 ` maxim.kuvyrkov at gmail dot com
2014-04-24 14:32 ` bernie.ogden at linaro dot org
2014-05-01 13:01 ` bernie.ogden at linaro dot org
2014-05-01 13:28 ` cvs-commit at gcc dot gnu.org
2014-05-01 15:28 ` will.newton at gmail dot com
2014-05-02  1:36 ` maxim.kuvyrkov at linaro dot org
2014-05-02  7:48 ` will.newton at gmail dot com
2014-06-10  3:25 ` cvs-commit at gcc dot gnu.org
2014-06-13 18:53 ` fweimer at redhat dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).