When an event source is removed (on the death of an application), the
notification thread "drains" any remaining notifications from the
event notifier pipe.
In doing so, it creates a new poll set containing the event source to
check if messages are left in the event notification pipe.
The invocation of `LTTNG_POLL_GETEV(&events, 1)` means to check the
events pending for the first (and only) fd in the poll set. This check
is off by one since `0` should be used.
For some reason, this worked everywhere except when using a 32-bit
userland on a 64-bit kernel (on x86_64).
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I6f274fdd7c80d5676fd48ae20a14adb3cc010142
* the pipe is closed but empty.
*/
ret = lttng_poll_wait_interruptible(&events, 0);
- if (ret == 0 || (LTTNG_POLL_GETEV(&events, 1) & LPOLLIN) == 0) {
+ if (ret == 0 || (LTTNG_POLL_GETEV(&events, 0) & LPOLLIN) == 0) {
/* No more notification to be read on this pipe. */
ret = 0;
goto end;