This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PING][PATCH v9] Add pretty printers for the NPTL lock types


On 07/11/2016 06:11 PM, Martin Galvan wrote:
Hi all! Before I forget, in the future please CC me directly because
sometimes I miss the mailing list digests. Thanks!

On Mon, Jul 11, 2016 at 12:00 PM, Siddhesh Poyarekar
<siddhesh@sourceware.org> wrote:
On Mon, Jul 11, 2016 at 03:16:19PM +0200, Stefan Liebler wrote:
On that machine, I have installed python-pexpect-3.1-1.fc20.noarch.
I've tried python2-pexpect-4.0.1-4.fc23.noarch on another machine and you
are right, the "echo=False" issue does not appear.

But I get fails:
FAIL: pretty-printers/test-condvar-attributes-pp:
Error: Response does not match the expected pattern.
Command: print *attr
Expected pattern: pthread_condattr_t
Response: Python Exception <class 'gdb.error'> No struct type named
pthread_condattr.:

Python Exception <class 'gdb.error'> No struct type named pthread_condattr.:

$3 = {__size = "\000\000\000", __align = 0}
<snip>
The gdb version is gdb-7.10.1-30.fc23.s390x.

That's odd, it looks like the pretty printer is still not registered.
Have you set up your gdbinit to register the printer?

To me it sounds like gdb.lookup_type not finding the struct types
representing the attributes. I'm not sure what could be causing that;
I've tested it with gdb 7.7 and 7.11 in x86_64, and 7.7 in ARM and it
always worked fine. Could you at least test it in x86?

I've tested it on a fedora 23 i686 vm with the following packages:
-python2-pexpect-4.0.1-4.fc23.noarch
-gdb-7.10-23.fc23.i686

As mentioned by Siddhesh the ~/.gdbinit contains:
python
import sys
sys.path.insert(0, '/home/stli/glibcDir/glibc-20160712_pp-build/nptl/')
end

source /home/stli/glibcDir/glibc/nptl/nptl-printers.py
add-auto-load-safe-path /home/stli/glibcDir/glibc-20160712_pp-build/nptl_db


Here is the output of the pp-tests:
FAIL: pretty-printers/test-condvar-attributes-pp
FAIL: pretty-printers/test-mutex-attributes-pp
FAIL: pretty-printers/test-rwlock-attributes-pp

env python test-mutex-attributes.py test-mutex-attributes.c /home/stli/glibcDir/glibc-20160712_pp-build/pretty-printers/test-mutex-attributes; \ ../scripts/evaluate-test.sh pretty-printers/test-mutex-attributes-pp $? false false > /home/stli/glibcDir/glibc-20160712_pp-build/pretty-printers/test-mutex-attributes-pp.test-result
Error: Response does not match the expected pattern.
Command: print *attr
Expected pattern: pthread_mutexattr_t
Response: Python Exception <class 'gdb.error'> No struct type named pthread_mutexattr.:

Python Exception <class 'gdb.error'> No struct type named pthread_mutexattr.:

$1 = {__size = "\002\000\000", __align = 2}

gdb-test%


env python test-condvar-attributes.py test-condvar-attributes.c /home/stli/glibcDir/glibc-20160712_pp-build/pretty-printers/test-condvar-attributes; \ ../scripts/evaluate-test.sh pretty-printers/test-condvar-attributes-pp $? false false > /home/stli/glibcDir/glibc-20160712_pp-build/pretty-printers/test-condvar-attributes-pp.test-result
Error: Response does not match the expected pattern.
Command: print *attr
Expected pattern: pthread_condattr_t
Response: Python Exception <class 'gdb.error'> No struct type named pthread_condattr.:

Python Exception <class 'gdb.error'> No struct type named pthread_condattr.:

$3 = {__size = "\000\000\000", __align = 0}

gdb-test%

env python test-rwlock-attributes.py test-rwlock-attributes.c /home/stli/glibcDir/glibc-20160712_pp-build/pretty-printers/test-rwlock-attributes; \ ../scripts/evaluate-test.sh pretty-printers/test-rwlock-attributes-pp $? false false > /home/stli/glibcDir/glibc-20160712_pp-build/pretty-printers/test-rwlock-attributes-pp.test-result
Error: Response does not match the expected pattern.
Command: print *attr
Expected pattern: pthread_rwlockattr_t
Response: Python Exception <class 'gdb.error'> No struct type named pthread_rwlockattr.:

Python Exception <class 'gdb.error'> No struct type named pthread_rwlockattr.:

$3 = {__size = "\000\000\000\000\000\000\000", __align = 0}

gdb-test%



Nevertheless is it possible to check the correct versions and warn
at configuring or mark the tests as unsupported if pexpect is not installed
or you have the false version?

I wasn't aware of versioning issues on PExpect. FWIW I saw that the
module has a __version__ attribute, so we could set a minimum version
(4.0.1 maybe?) and mark the tests as UNSUPPORTED if our version is
lower. It would require a bit of string parsing but it should be
relatively easy to do.

I just see that the python-pexpect.noarch package in fc23 is version 3.1. You could install it instead of python2-pexpect.noarch (version 4.0.1) in order to test your version checking?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]