New Comment on Issue #github
Pcp Integration <[email protected]>
| Newsgroups | gmane.comp.sysutils.pcp |
|---|---|
| Message-ID | <[email protected]> |
[pcp:master] New Comment on Issue #265 *** buffer overflow detected ***: /usr/libexec/pcp/bin/pmlogger terminated ( https://github.com/performancecopilot/pcp/issues/265 )
By fche ( https://github.com/fche ) :
addr2line can partially decode th backtrace:
======= Backtrace: ========= /lib64/libc.so.6(+0x7566b)[0x7fd67804266b] /lib64/libc.so.6(__fortify_fail+0x37)[0x7fd6780e1c57] /lib64/libc.so.6(+0x112d80)[0x7fd6780dfd80] /lib64/libc.so.6(+0x114bca)[0x7fd6780e1bca] /lib64/libpcp.so.3(+0x5f69d)[0x7fd67860a69d] /usr/src/debug/pcp-3.11.5/src/libpcp/src/secureconnect.c:1630 /lib64/libpcp.so.3(+0x1dfa2)[0x7fd6785c8fa2] /usr/src/debug/pcp-3.11.5/src/libpcp/src/pdu.c:171 /lib64/libpcp.so.3(__pmGetPDU+0x5f)[0x7fd6785c99bf] /usr/libexec/pcp/bin/pmlogger(+0x7f5b)[0x55ea065e8f5b] fetch.c:130 /usr/libexec/pcp/bin/pmlogger(+0x8d3e)[0x55ea065e9d3e] callback.c:513 /usr/libexec/pcp/bin/pmlogger(+0x54e0)[0x55ea065e64e0] pmlogger.c:1025 /lib64/libc.so.6(__libc_start_main+0xf1)[0x7fd677fed731] /usr/libexec/pcp/bin/pmlogger(+0x65e9)[0x55ea065e75e9]
That secureconnect.c line is:
1619 int 1620 __pmSocketReady(int fd, struct timeval *timeout) 1621 { 1622 __pmSecureSocket socket; 1623 __pmFdSet onefd; 1624 1625 if (__pmDataIPC(fd, &socket) == 0 && socket.sslFd) 1626 if (SSL_DataPending(socket.sslFd)) 1627 return 1; /* proceed without blocking */ 1628 1629 FD_ZERO(&onefd); 1630 FD_SET(fd, &onefd); 1631 return select(fd+1, &onefd, NULL, NULL, timeout); 1632 }
and I bet this fd == -1, which may be the same bug corrected in this patch, or maybe a separate copy of the bug that you previously reported here as issue #116.
commit bd32862bf6630c604548a0859e641ea97a75fcd2 Author: Ken McDonell Date: Sat Oct 1 06:3012 2016 +1000 src/libpcp/pdu.c: allow -EINTR to be returned from pduread() If a SIGINT is received during a socket read of a PDU, we want to propagate -EINTR back to the caller, not PM_ERR_IPC or -1, so that the caller can decide what to do.