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
|