** Description changed: + SRU acceptance criteria: the package builds and the test case succeeds. + This is an obvious typo. + while testing some code for potential memory leaks (using valgrind) I found out that the test are failing only on Ubuntu 17.10 and the problem appears to be somewhere in the Ubuntu toolchain. I honestly can´t be 100% sure it´s a gcc / glibc or valgrind issue. I reduce the test case to the attached main.c file. I have tested that same piece code on the following distributions: fedora26, fedora-rawhide, rhel7.4, rhel7.5-devel, debian9, debian testing, debian unstable and debian experimental without any error. On all the above distros: # gcc -Wall main.c - # valgrind -q --error-exitcode=127 --track-fds=yes --leak-check=full ./a.out + # valgrind -q --error-exitcode=127 --track-fds=yes --leak-check=full ./a.out <hit enter to create an epoll_event> received event: 1 ==1807== FILE DESCRIPTORS: 3 open at exit. ==1807== Open file descriptor 2: /dev/pts/0 ==1807== <inherited from parent> - ==1807== + ==1807== ==1807== Open file descriptor 1: /dev/pts/0 ==1807== <inherited from parent> - ==1807== + ==1807== ==1807== Open file descriptor 0: /dev/pts/0 ==1807== <inherited from parent> - ==1807== - ==1807== + ==1807== + ==1807== # echo $? 0 On ubuntu 17.10 freshly installed and fully updated: - # valgrind -q --error-exitcode=127 --track-fds=yes --leak-check=full ./a.out + # valgrind -q --error-exitcode=127 --track-fds=yes --leak-check=full ./a.out ==8057== Syscall param epoll_pwait(sigmask) points to unaddressable byte(s) ==8057== at 0x4F50C20: epoll_pwait (epoll_pwait.c:42) ==8057== by 0x108A2B: main (in /home/ubuntu/a.out) ==8057== Address 0x0 is not stack'd, malloc'd or (recently) free'd - ==8057== + ==8057== received event: 1 ==8057== FILE DESCRIPTORS: 3 open at exit. ==8057== Open file descriptor 2: /dev/pts/4 ==8057== <inherited from parent> - ==8057== + ==8057== ==8057== Open file descriptor 1: /dev/pts/4 ==8057== <inherited from parent> - ==8057== + ==8057== ==8057== Open file descriptor 0: /dev/pts/4 ==8057== <inherited from parent> - ==8057== - ==8057== + ==8057== + ==8057== # echo $? 127 as you can see from the code, we don´t invoke epoll_pwait directly, we invoke only epoll_wait. According to the man page for epoll_(p)wait, sigmask can be NULL but somehow valgrind is catching that as an error or somehow glibc epoll_wait or epoll_pwait are not treating that properly. I don´t see any relevant code difference between glibc in debian unstable (2.24-17) or ubuntu 17.10 (2.26-0ubuntu2) that could warrant this kind of behavior. Due to this bug, you could expect some test suite to fail. Not sure if it can have some runtime side effects tho.
** Also affects: valgrind via https://bugs.kde.org/show_bug.cgi?id=381289 Importance: Unknown Status: Unknown ** Changed in: valgrind (Ubuntu) Status: Confirmed => In Progress -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1726711 Title: valgrind reports invalid memory access on epoll_pwait call when invoked via epoll_wait To manage notifications about this bug go to: https://bugs.launchpad.net/valgrind/+bug/1726711/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs