Public bug reported:

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 
<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== Open file descriptor 1: /dev/pts/0
==1807==    <inherited from parent>
==1807== 
==1807== Open file descriptor 0: /dev/pts/0
==1807==    <inherited from parent>
==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 
==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== 

received event: 1
==8057== FILE DESCRIPTORS: 3 open at exit.
==8057== Open file descriptor 2: /dev/pts/4
==8057==    <inherited from parent>
==8057== 
==8057== Open file descriptor 1: /dev/pts/4
==8057==    <inherited from parent>
==8057== 
==8057== Open file descriptor 0: /dev/pts/4
==8057==    <inherited from parent>
==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.

** Affects: glibc (Ubuntu)
     Importance: Undecided
         Status: New

** Attachment added: "reduced test case"
   https://bugs.launchpad.net/bugs/1726711/+attachment/4990271/+files/main.c

-- 
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/ubuntu/+source/glibc/+bug/1726711/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to