pcp
[Top] [All Lists]

Re: [pcp] QA status

To: Dave Brolley <brolley@xxxxxxxxxx>
Subject: Re: [pcp] QA status
From: Nathan Scott <nathans@xxxxxxxxxx>
Date: Mon, 4 Mar 2013 01:06:54 -0500 (EST)
Cc: PCP <pcp@xxxxxxxxxxx>
Delivered-to: pcp@xxxxxxxxxxx
In-reply-to: <1382698873.8575799.1361780575090.JavaMail.root@xxxxxxxxxx>
Reply-to: Nathan Scott <nathans@xxxxxxxxxx>
Hi Dave,

----- Original Message -----
> ----- Original Message -----
> > 
> > On 02/22/2013 03:12 PM, Nathan Scott wrote:
> > > Oh, except for 197, not sure what that is yet.
> > Me neither. I looked into it, but got nowhere. While the fds do not
> > appear to be leaking through the exec() call, there do seem to be
> > more of them after pmNewContext() is called. The results are
> > identical for NSS and non-NSS builds.
> > 
> 
> Hmm, I'm not sure about that last statement - AFAICT, the problem is
> as a result of the NSS_InitReadWrite that opens the NSS sqlite DB, 
> seems to  open several new file descriptors ... this looks like a
> failure I have unwittingly introduced, will fix shortly.
> 

OK, I'm at 100% pass rate for NSS-enabled-builds, and I have two
failures in the "native" sockets implementation, which are probably
the ones you've already seen & mentioned.  273 and 430, both look
related to pmlogger (or pmlogger PDUs) and IPv6.

>From looking into 273, it looks like in native mode, we end up in
a getaddrinfo() loop passing over several IPv6 addresses, etc before
we find the IPv4 address where the connection succeeds.  Strangely,
I thought, that this passes with NSS but not without.  Looking into
the code, it seems the NSS implementation of __pmGetAddrInfo doesnt
actually call PR_GetAddrInfoByName, rather it uses PR_GetHostByName?
Whereas the native variant does use getaddrinfo ... could this be
why it passes on NSS-enabled builds?  Seems a bit odd.

This is the part of 273 that is failing - there are an unexpectedly
high number of calls (and diagnostics) from __pmSetSocketIPC(), as a
result of the additional calls to __pmInitSocket, as a result of
iterating over several possible addresses (3 x IPv6?) I guess:

nathans@smash:/var/lib/pcp/testsuite$ sudo gdb --quiet --args src/chknumval 
-Dcontext -L pmcd.control.debug sampledso.long.write_me sample.colour
Reading symbols from /var/lib/pcp/testsuite/src/chknumval...done.
(gdb) break __pmSetSocketIPC
Function "__pmSetSocketIPC" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (__pmSetSocketIPC) pending.
(gdb) r
Starting program: /var/lib/pcp/testsuite/src/chknumval -Dcontext -L 
pmcd.control.debug sampledso.long.write_me sample.colour
[Thread debugging using libthread_db enabled]
Detaching after fork from child process 19058.
build_dsotab: parsing /etc/pcp/pmcd/pmcd.conf
[6] domain=60, name=/var/lib/pcp/pmdas/linux/pmda_linux.so, init=linux_init
__pmLocalPMDA(op=ADD, domain=60, name=/var/lib/pcp/pmdas/linux/pmda_linux.so, 
init=linux_init)
Local Context PMDA Table
0x603040 [0] domain=60 name=/var/lib/pcp/pmdas/linux/pmda_linux.so 
init=linux_init handle=(nil)
[7] domain=70, name=/var/lib/pcp/pmdas/mmv/pmda_mmv.so, init=mmv_init
__pmLocalPMDA(op=ADD, domain=70, name=/var/lib/pcp/pmdas/mmv/pmda_mmv.so, 
init=mmv_init)
Local Context PMDA Table
0x627060 [0] domain=60 name=/var/lib/pcp/pmdas/linux/pmda_linux.so 
init=linux_init handle=(nil)
0x6270e0 [1] domain=70 name=/var/lib/pcp/pmdas/mmv/pmda_mmv.so init=mmv_init 
handle=(nil)
[12] domain=30, name=/var/lib/pcp/pmdas/sample/pmda_sample.so, init=sample_init
__pmLocalPMDA(op=ADD, domain=30, name=/var/lib/pcp/pmdas/sample/pmda_sample.so, 
init=sample_init)
Local Context PMDA Table
0x627060 [0] domain=60 name=/var/lib/pcp/pmdas/linux/pmda_linux.so 
init=linux_init handle=(nil)
0x6270e0 [1] domain=70 name=/var/lib/pcp/pmdas/mmv/pmda_mmv.so init=mmv_init 
handle=(nil)
0x627160 [2] domain=30 name=/var/lib/pcp/pmdas/sample/pmda_sample.so 
init=sample_init handle=(nil)
pmNewContext(3, localhost) -> 0
Dump Contexts: current context = 0
Context[0] standalone: profile=NOT_SENT
Dump Instance Profile state=INCLUDE, 0 profiles
__pmConnectLogger(host=localhost, pid=0, port=-2)
__pmConnectLogger: __pmLogFindPort -> pid = 4330

Breakpoint 1, __pmSetSocketIPC (fd=11) at ipc.c:110
110     {
Missing separate debuginfos, use: debuginfo-install 
glibc-2.12-1.80.el6_3.7.x86_64
(gdb) bt
#0  __pmSetSocketIPC (fd=11) at ipc.c:110
#1  0x00007ffff7dc544a in __pmInitSocket (fd=11) at auxconnect.c:80
#2  0x00007ffff7dc557e in createSocket (family=<value optimized out>) at 
auxconnect.c:367
#3  0x00007ffff7dc55cf in __pmCreateIPv6Socket () at auxconnect.c:381
#4  0x00007ffff7dc7691 in __pmConnectLogger (hostname=<value optimized out>, 
pid=0x7fffffffe66c, 
    port=0x7fffffffe668) at logconnect.c:160
#5  0x0000000000400f53 in main (argc=6, argv=<value optimized out>) at 
chknumval.c:126
(gdb) c
Continuing.
__pmSetSocketIPC: fd=11
IPC table fd(PDU version):

Breakpoint 1, __pmSetSocketIPC (fd=11) at ipc.c:110
110     {
(gdb) bt
#0  __pmSetSocketIPC (fd=11) at ipc.c:110
#1  0x00007ffff7dc544a in __pmInitSocket (fd=11) at auxconnect.c:80
#2  0x00007ffff7dc557e in createSocket (family=<value optimized out>) at 
auxconnect.c:367
#3  0x00007ffff7dc55cf in __pmCreateIPv6Socket () at auxconnect.c:381
#4  0x00007ffff7dc7691 in __pmConnectLogger (hostname=<value optimized out>, 
pid=0x7fffffffe66c, 
    port=0x7fffffffe668) at logconnect.c:160
#5  0x0000000000400f53 in main (argc=6, argv=<value optimized out>) at 
chknumval.c:126
(gdb) c
Continuing.
__pmSetSocketIPC: fd=11
IPC table fd(PDU version):

Breakpoint 1, __pmSetSocketIPC (fd=11) at ipc.c:110
110     {
(gdb) bt
#0  __pmSetSocketIPC (fd=11) at ipc.c:110
#1  0x00007ffff7dc544a in __pmInitSocket (fd=11) at auxconnect.c:80
#2  0x00007ffff7dc557e in createSocket (family=<value optimized out>) at 
auxconnect.c:367
#3  0x00007ffff7dc55cf in __pmCreateIPv6Socket () at auxconnect.c:381
#4  0x00007ffff7dc7691 in __pmConnectLogger (hostname=<value optimized out>, 
pid=0x7fffffffe66c, 
    port=0x7fffffffe668) at logconnect.c:160
#5  0x0000000000400f53 in main (argc=6, argv=<value optimized out>) at 
chknumval.c:126
(gdb) c
Continuing.
__pmSetSocketIPC: fd=11
IPC table fd(PDU version):

Breakpoint 1, __pmSetSocketIPC (fd=11) at ipc.c:110
110     {
(gdb) bt
#0  __pmSetSocketIPC (fd=11) at ipc.c:110
#1  0x00007ffff7dc544a in __pmInitSocket (fd=11) at auxconnect.c:80
#2  0x00007ffff7dc557e in createSocket (family=<value optimized out>) at 
auxconnect.c:367
#3  0x00007ffff7dc74a5 in __pmConnectLogger (hostname=<value optimized out>, 
pid=0x7fffffffe66c, 
    port=0x7fffffffe668) at logconnect.c:158
#4  0x0000000000400f53 in main (argc=6, argv=<value optimized out>) at 
chknumval.c:126
(gdb) c
Continuing.
__pmSetSocketIPC: fd=11
IPC table fd(PDU version):
__pmDecodeError: got error PDU (code=2, fromversion=2)
__pmSetVersionIPC: fd=11 version=2
IPC table fd(PDU version): 11(2,1)
__pmSendCreds: #0 = 1020000
__pmConnectLogger: PDU version=2 fd=11
pmWhichContext() -> 0, cur=0
pmWhichContext() -> 0, cur=0
pmResult dump from 0x61be50 timestamp: 1362374280.157347 16:18:00.157 numpmid: 3
  2.0.0 (pmcd.control.debug): No PMCD agent for domain of request
  30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
   value 13
  29.0.5 (sample.colour): No PMCD agent for domain of request

base store test (failures not unexpected) ...
pmStore: Missing metric value(s)

numpmid == 0 tests (failures expected) ...
pmResult dump from 0x61be50 timestamp: 1362374280.157347 16:18:00.157 numpmid: 0
pmStore: Insufficient elements in list
__pmControlLog: Insufficient elements in list

numval == 0 tests (failures expected) ...
pmResult dump from 0x61be50 timestamp: 1362374280.157347 16:18:00.157 numpmid: 3
  2.0.0 (pmcd.control.debug): No PMCD agent for domain of request
  30.0.14 (sampledso.long.write_me): No values returned!
  29.0.5 (sample.colour): No PMCD agent for domain of request
pmStore: Missing metric value(s)
__pmControlLog: OK
pmResult dump from 0x61b610 timestamp: 0.000000 10:00:00.000 numpmid: 3
  2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
   value 0 0 0x0
  30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
   value 2
  29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
    inst [0 or ???] value 0 0 0x0
    inst [1 or ???] value 0 0 0x0
    inst [2 or ???] value 0 0 0x0

numval < 0 tests (failures expected) ...
pmResult dump from 0x61be50 timestamp: 1362374280.157347 16:18:00.157 numpmid: 3
  2.0.0 (pmcd.control.debug): No PMCD agent for domain of request
  30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
   value 13
  29.0.5 (sample.colour): No PMCD agent for domain of request
pmStore: Missing metric value(s)
__pmControlLog: OK
pmResult dump from 0x61b610 timestamp: 0.000000 10:00:00.000 numpmid: 3
  2.0.0 (pmcd.control.debug): numval: 1 valfmt: 0 vlist[]:
   value 0 0 0x0
  30.0.14 (sampledso.long.write_me): numval: 1 valfmt: 0 vlist[]:
   value 2
  29.0.5 (sample.colour): numval: 3 valfmt: 0 vlist[]:
    inst [0 or ???] value 0 0 0x0
    inst [1 or ???] value 0 0 0x0
    inst [2 or ???] value 0 0 0x0
Quitting need at least 4 metrics for profile tests
pmWhichContext() -> 0, cur=0
NotifyEndLocalContext: DSO PMDA /var/lib/pcp/pmdas/sample/pmda_sample.so (30) 
notified of context 0 close

Program exited with code 01.
(gdb) 



cheers.

--
Nathan

<Prev in Thread] Current Thread [Next in Thread>