#1004 Need better support for SIGCHLD in providers
Closed: Fixed None Opened 9 years ago by sgallagh.

Right now, we rely on each provider setting up a SIGCHLD handler whenever it spawns a child process (such as the krb5_child, ldap_child or proxy_child).

However, this can cause problems if two providers both need SIGCHLD handlers at the same time.

The proper way to handle this would be to create a common SIGCHLD handler as part of data_provider_be.c. Provider plugins would then be able to register a pid and a callback with the data_provider routine, which would then listen for all SIGCHLD events. When it receives one, it should loop through waitpid() (in case more than one completes at the same time). For each pid detected, it should create a tevent timed event to invoke the callback for that pid. This callback would then fire after re-entering the tevent mainloop (for memory protection guarantees).

A better long-term solution would be to add such a function into tevent itself, but for now we need to work around this ourselves.

Fields changed

milestone: NEEDS_TRIAGE => SSSD 1.7.0
owner: somebody => pzuna

Prepare as a patch for tevent.

owner: pzuna => sgallagh
type: enhancement => task

Fields changed

patch: 0 => 1
status: new => assigned

Fixed by 6a9bdb6

blockedby: =>
blocking: =>
resolution: => fixed
status: assigned => closed

Fields changed

rhbz: => 0

Metadata Update from @sgallagh:
- Issue assigned to sgallagh
- Issue set to the milestone: SSSD 1.7.0

4 years ago

SSSD is moving from Pagure to Github. This means that new issues and pull requests
will be accepted only in SSSD's github repository.

This issue has been cloned to Github and is available here:
- https://github.com/SSSD/sssd/issues/2046

If you want to receive further updates on the issue, please navigate to the github issue
and click on subscribe button.

Thank you for understanding. We apologize for all inconvenience.

Login to comment on this ticket.