1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Fix mutex pretty printer test and pretty printer output.

This fixes the mutex pretty printer so that, if the owner ID isn't recorded
(such as in the current lock elision implementation), "Owner ID" will be shown
as "Unknown" instead of 0. It also changes the mutex printer output so that it
says "Acquired" instead of "Locked". The mutex tests are updated accordingly.

In addition, this adds a paragraph to the "Known issues" section of the
printers README explaining that the printer output isn't guaranteed to cover
every detail.

2017-01-14  Martin Galvan  <martingalvan@sourceware.org>

        * README.pretty-printers (Known issues): Warn about printers not
        always covering everything.
        * nptl/nptl-printers.py (MutexPrinter): Change output.
        * nptl/test-mutex-printers.py: Fix test and adapt to changed output.
This commit is contained in:
Torvald Riegel
2017-01-20 14:54:49 +01:00
parent 03b007771b
commit 6d523660e9
4 changed files with 43 additions and 21 deletions

View File

@ -39,15 +39,18 @@ try:
break_at(test_source, 'Test status (non-robust)')
continue_cmd() # Go to test_status_no_robust
test_printer(var, to_string, {'Status': 'Unlocked'})
test_printer(var, to_string, {'Status': 'Not acquired'})
next_cmd()
thread_id = get_current_thread_lwpid()
test_printer(var, to_string, {'Status': 'Locked, possibly with no waiters',
'Owner ID': thread_id})
# Owner ID might be reported either as the thread ID or as "Unknown"
# (if e.g. lock elision is enabled).
test_printer(var, to_string,
{'Status': 'Acquired, possibly with no waiters',
'Owner ID': r'({0}|Unknown)'.format(thread_id)})
break_at(test_source, 'Test status (robust)')
continue_cmd() # Go to test_status_robust
test_printer(var, to_string, {'Status': 'Unlocked'})
test_printer(var, to_string, {'Status': 'Not acquired'})
# We'll now test the robust mutex locking states. We'll create a new
# thread that will lock a robust mutex and exit without unlocking it.
@ -75,15 +78,15 @@ try:
test_printer(var, to_string, {'Owner ID': thread_id,
'State protected by this mutex': 'Inconsistent'})
next_cmd()
test_printer(var, to_string, {'Status': 'Unlocked',
test_printer(var, to_string, {'Status': 'Not acquired',
'State protected by this mutex': 'Not recoverable'})
set_scheduler_locking(False)
break_at(test_source, 'Test recursive locks')
continue_cmd() # Go to test_recursive_locks
test_printer(var, to_string, {'Times locked recursively': '2'})
test_printer(var, to_string, {'Times acquired by the owner': '2'})
next_cmd()
test_printer(var, to_string, {'Times locked recursively': '3'})
test_printer(var, to_string, {'Times acquired by the owner': '3'})
continue_cmd() # Exit
except (NoLineError, pexpect.TIMEOUT) as exception: