Bug 978962
Summary: | tevent_loop_wait() never finishes | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | Pavel Březina <pbrezina> | ||||||
Component: | libtevent | Assignee: | Jakub Hrozek <jhrozek> | ||||||
Status: | CLOSED ERRATA | QA Contact: | Kaushik Banerjee <kbanerje> | ||||||
Severity: | unspecified | Docs Contact: | |||||||
Priority: | unspecified | ||||||||
Version: | 6.4 | CC: | apeetham, asn, jgalipea | ||||||
Target Milestone: | rc | ||||||||
Target Release: | --- | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | libtevent-0.9.18-3.el6 | Doc Type: | Bug Fix | ||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | |||||||||
: | 994015 (view as bug list) | Environment: | |||||||
Last Closed: | 2013-11-21 05:42:32 UTC | Type: | Bug | ||||||
Regression: | --- | Mount Type: | --- | ||||||
Documentation: | --- | CRM: | |||||||
Verified Versions: | Category: | --- | |||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||
Embargoed: | |||||||||
Bug Depends On: | |||||||||
Bug Blocks: | 994015 | ||||||||
Attachments: |
|
Pavel, can you bring this up on samba-technical and CC me, please? I've created an upstream bug for the issue. Created attachment 781696 [details]
patch
Here is the patch which has been pushed upstream.
Verified the bug on libtevent Version: libtevent-0.9.18-3.el6.x86_64 Steps followed during verification: 1. Copied the reproducer "tevent_loop.c" onto the client system. 2. # gcc -ltalloc -ltevent tevent_loop.c 3. Execute the reproducer program: [root@rhel-65 bkup]# ./a.out Registering signal handler... Unregistering signal handler... Entering tevent loop... We got through the loop! OK As expected, the program gets through tevent_loop_wait(), and prints "We got through the loop! OK". 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 |
Created attachment 766074 [details] reproducer Description of problem: If a signal handler is registered and unregistered later, tevent_loop_wait() never finishes. Version-Release number of selected component (if applicable): libtevent-0.9.17-1.el6.x86_64 How reproducible: Always. Steps to Reproduce: Reproducer is attached. 1. gcc -ltalloc -ltevent tevent_loop.c 2. ./a.out Actual results: The program never gets out of tevent_loop_wait(). "We got through the loop! OK" is never printed. Expected results: The program gets through tevent_loop_wait(). "We got through the loop! OK" is printed. Additional info: This is because tevent internally registers its own signal handler "sig_pipe_handler". This handler is never removed, which causes program to stuck in tevent_loop_wait() even if there are no custom handlers registered.