Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
DescriptionAndreas Schneider
2013-04-11 11:18:31 UTC
Currently we have version 0.9.16 in RHEL 6.4. We would like to update to version 0.9.18 cause it has a lot of important bugfixes we would like to have in RHEL 6.5. It would be possible to backport all patches, but we want really most of them cause they improve libtevent.
Some background:
-----------------
We found these bugs cause of a customer (not a RH customer) having problems with the poll backend in winbind. After changing the winbind code to fully use libtevent epoll backend, winbind went down from running at 100% to nearly never seen in top.
Testing:
---------
There is no additional testing needed beside running the testsuite of libtevent. The tests we are running in Samba or sssd cover libtevent functionality too.
Here are some details about the changes:
-----------------------------------------
0.9.17 added a thread safe poll backend (not in use by samba or ipa/sssd). This is a small patch.
0.9.18 is a bugfix release, with a lot of fixes. A rebase would just be
simpler for us. libtevent is a low-level library. Patches need to be tested
well and we require testcases upstream from changes.
- Adding new timer events is now faster, if there's
a large number of timer events.
- sigprocmask does not work on FreeBSD to stop further signals in a signal
handler.
- TEVENT_NUM_SIGNALS is calculated by configure in order
to support realtime signals on freebsd.
- ./configure --disable-python was fixed for the standalone build.
- Several crash bugs in the poll backend are fixed.
- The poll backend removes deleted events from the
cached pollfd array now.
- The poll doesn't pass pollfd.events == 0 to poll()
and maintains a list of disabled events,
instead of consuming 100% cpu and/or triggering
the callers handler.
- The poll backend detects POLLNVAL and reports EBADF
instead of consuming 100% cpu.
- The select backend supports separate handlers
for TEVENT_FD_READ and TEVENT_FD_WRITE.
- The poll and select backends are now doing fair
queuing of fd events.
- The epoll has better error checking
and supports separate handlers
for TEVENT_FD_READ and TEVENT_FD_WRITE.
- The standard backend was rewritten to be a tiny
wrapper on top of epoll with a fallback to poll,
which means that it doesn't use select directly anymore.
- TEVENT_TRACE_BEFORE_LOOP_ONCE and TEVENT_TRACE_AFTER_LOOP_ONCE
are added in order to allow the application to hook in
before and after the loop_once() backend function is called.
The TEVENT_HAS_LOOP_ONCE_TRACE_POINTS define can be used to
detect the new feature.
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
http://rhn.redhat.com/errata/RHBA-2013-1552.html
Currently we have version 0.9.16 in RHEL 6.4. We would like to update to version 0.9.18 cause it has a lot of important bugfixes we would like to have in RHEL 6.5. It would be possible to backport all patches, but we want really most of them cause they improve libtevent. Some background: ----------------- We found these bugs cause of a customer (not a RH customer) having problems with the poll backend in winbind. After changing the winbind code to fully use libtevent epoll backend, winbind went down from running at 100% to nearly never seen in top. Testing: --------- There is no additional testing needed beside running the testsuite of libtevent. The tests we are running in Samba or sssd cover libtevent functionality too. Here are some details about the changes: ----------------------------------------- 0.9.17 added a thread safe poll backend (not in use by samba or ipa/sssd). This is a small patch. 0.9.18 is a bugfix release, with a lot of fixes. A rebase would just be simpler for us. libtevent is a low-level library. Patches need to be tested well and we require testcases upstream from changes. - Adding new timer events is now faster, if there's a large number of timer events. - sigprocmask does not work on FreeBSD to stop further signals in a signal handler. - TEVENT_NUM_SIGNALS is calculated by configure in order to support realtime signals on freebsd. - ./configure --disable-python was fixed for the standalone build. - Several crash bugs in the poll backend are fixed. - The poll backend removes deleted events from the cached pollfd array now. - The poll doesn't pass pollfd.events == 0 to poll() and maintains a list of disabled events, instead of consuming 100% cpu and/or triggering the callers handler. - The poll backend detects POLLNVAL and reports EBADF instead of consuming 100% cpu. - The select backend supports separate handlers for TEVENT_FD_READ and TEVENT_FD_WRITE. - The poll and select backends are now doing fair queuing of fd events. - The epoll has better error checking and supports separate handlers for TEVENT_FD_READ and TEVENT_FD_WRITE. - The standard backend was rewritten to be a tiny wrapper on top of epoll with a fallback to poll, which means that it doesn't use select directly anymore. - TEVENT_TRACE_BEFORE_LOOP_ONCE and TEVENT_TRACE_AFTER_LOOP_ONCE are added in order to allow the application to hook in before and after the loop_once() backend function is called. The TEVENT_HAS_LOOP_ONCE_TRACE_POINTS define can be used to detect the new feature.