[SSSD] [PATCHES] Sig handlers cleanups

Pavel Reichl preichl at redhat.com
Mon Jan 5 17:48:29 UTC 2015


On 11/12/2013 11:32 AM, Jakub Hrozek wrote:
> On Tue, Nov 12, 2013 at 11:15:17AM +0100, Sumit Bose wrote:
>> On Tue, Nov 12, 2013 at 10:45:48AM +0100, Jakub Hrozek wrote:
>>> On Tue, Nov 12, 2013 at 10:27:48AM +0100, Sumit Bose wrote:
>>>> On Mon, Nov 11, 2013 at 02:37:39PM -0500, Simo Sorce wrote:
>>>>> On Mon, 2013-11-11 at 17:33 +0100, Sumit Bose wrote:
>>>>>> On Mon, Nov 11, 2013 at 08:56:12AM -0500, Simo Sorce wrote:
>>>>>>> On Mon, 2013-11-11 at 09:20 +0100, Sumit Bose wrote:
>>>>>>>> On Sat, Nov 09, 2013 at 04:26:36PM -0500, Simo Sorce wrote:
>>>>>>>>> While checking if our custom signal handlers properly handle errno, I
>>>>>>>>> stumbled on a few cleanups, they are attached.
>>>>>>>>>
>>>>>>>>> turns out our few signal hanlders are errno safe, and tevent signal
>>>>>>>>> handling function is also fine.
>>>>>>>>>
>>>>>>>>> Simo.
>>>>>>>>>
>>>>>>>>> -- 
>>>>>>>>> Simo Sorce * Red Hat, Inc * New York
>>>>>>>>
>>>>>>>>>  From 8244f7619c5042dc45751ce3bbff75f2dbc03e05 Mon Sep 17 00:00:00 2001
>>>>>>>>> From: Simo Sorce <simo at redhat.com>
>>>>>>>>> Date: Sat, 9 Nov 2013 16:11:04 -0500
>>>>>>>>> Subject: [PATCH 2/3] Signals: Remove empty sig_hup
>>>>>>>>>
>>>>>>>>> SIGHUP handling is simply not implemented, so just block the signal instead of
>>>>>>>> it is, see te_server_hup() and the usage is documented in the sssd man
>>>>>>>> page.
>>>>>>>>
>>>>>>>>> using a fake handler.
>>>>>>> Ok does it mean I need to remove the part where I block the signal ?
>>>>>> no, but you have to unblock it in server_setup() and if it is harmless
>>>>>> to unblock a signal twice I would unblock it in monitor_process_init()
>>>>>> before calling tevent_add_signal() as well.
>>>>>>
>>>>>>> Do you have any other comment ?
>>>>>> no, but I still need to test them.
>>>>>>
>>>>>>> The sig_hup(int sig) function *was* useless ? Or is it there as a place
>>>>>>> holder until te_server_hup() takes over ?
>>>>>> no, I think the common patter here is to block everything in
>>>>>> setup_signals() and then unblock the signal when the related
>>>>>> tevent_add_signal() is called.
>>>>> Ok after looking more carefully at how we setup the tevent handlers for
>>>>> SIGHUP I just reverted the part of the patch that would block the
>>>>> signal, it makes no sense to block it just to revert the action a few
>>>>> microseconds later.
>>>>>
>>>>> New patch 0002 attached.
>>>> Thank you. With this patch SSSD receives and handles all documented
>>>> signals.
>>>>
>>>> ACK
>>>>
>>>> While testing I came across an oddness which we might want to fix. The
>>>> sssd_be processes can receive SIGUSR1 individually and go offline. But
>>>> the SIGUSR2 is not handled by sssd_be directly but only by the monitor
>>>> which then send a reset offline request to all backends. Shall sssd_be
>>>> handle SIGUSR2 as well?
>>>>
>>>> bye,
>>>> Sumit
>>> Which patches should be pushed? #1 and #3 from the original mail and #2
>>> from the follow up?
>> yes
>>
>> bye,
>> Sumit
> OK, pushed those three to master.
> _______________________________________________
> sssd-devel mailing list
> sssd-devel at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/sssd-devel
Hello, I'm having some troubles compiling SSSD 1-11 when Samba 4.1.14-1 
is installed.
These problem seem to be solved when patch 'Signals: Remove unused 
functions' is applied.
Can we push it to 1-11 branch?

Compilation errors:

In file included from ../src/providers/ad/ad_srv.c:27:0:
../src/util/util.h:230:6: error: conflicting types for 'CatchChild'
  void CatchChild(void);
       ^
In file included from /usr/include/samba-4.0/ndr.h:30:0,
                  from ../src/providers/ad/ad_srv.c:24:
/usr/include/samba-4.0/samba_util.h:110:8: note: previous declaration of 
'CatchChild' was here
  void (*CatchChild(void))(int);
         ^
In file included from ../src/providers/ad/ad_srv.c:27:0:
../src/util/util.h:231:6: error: conflicting types for 
'CatchChildLeaveStatus'
  void CatchChildLeaveStatus(void);
       ^
In file included from /usr/include/samba-4.0/ndr.h:30:0,
                  from ../src/providers/ad/ad_srv.c:24:
/usr/include/samba-4.0/samba_util.h:115:8: note: previous declaration of 
'CatchChildLeaveStatus' was here
  void (*CatchChildLeaveStatus(void))(int);
         ^
make[2]: *** [src/providers/ad/libsss_ad_la-ad_srv.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /usr/include/samba-4.0/ndr.h:30:0,
                  from ../src/providers/ad/ad_subdomains.c:32:
/usr/include/samba-4.0/samba_util.h:110:8: error: conflicting types for 
'CatchChild'
  void (*CatchChild(void))(int);
         ^
In file included from ../src/providers/data_provider.h:38:0,
                  from ../src/providers/dp_backend.h:25,
                  from ../src/providers/ldap/sdap_async.h:29,
                  from ../src/providers/ad/ad_subdomains.c:25:
../src/util/util.h:230:6: note: previous declaration of 'CatchChild' was 
here
  void CatchChild(void);
       ^
In file included from /usr/include/samba-4.0/ndr.h:30:0,
                  from ../src/providers/ad/ad_subdomains.c:32:
/usr/include/samba-4.0/samba_util.h:115:8: error: conflicting types for 
'CatchChildLeaveStatus'
  void (*CatchChildLeaveStatus(void))(int);
         ^
In file included from ../src/providers/data_provider.h:38:0,
                  from ../src/providers/dp_backend.h:25,
                  from ../src/providers/ldap/sdap_async.h:29,
                  from ../src/providers/ad/ad_subdomains.c:25:
../src/util/util.h:231:6: note: previous declaration of 
'CatchChildLeaveStatus' was here
  void CatchChildLeaveStatus(void);
       ^
make[2]: *** [src/providers/ad/libsss_ad_la-ad_subdomains.lo] Error 1
In file included from ../src/providers/data_provider.h:38:0,
                  from ../src/providers/dp_backend.h:25,
                  from ../src/providers/ldap/sdap.h:25,
                  from ../src/providers/ad/ad_domain_info.c:31:
../src/util/util.h:230:6: error: conflicting types for 'CatchChild'
  void CatchChild(void);
       ^
In file included from /usr/include/samba-4.0/ndr.h:30:0,
                  from ../src/providers/ad/ad_domain_info.c:28:
/usr/include/samba-4.0/samba_util.h:110:8: note: previous declaration of 
'CatchChild' was here
  void (*CatchChild(void))(int);
         ^
In file included from ../src/providers/data_provider.h:38:0,
                  from ../src/providers/dp_backend.h:25,
                  from ../src/providers/ldap/sdap.h:25,
                  from ../src/providers/ad/ad_domain_info.c:31:
../src/util/util.h:231:6: error: conflicting types for 
'CatchChildLeaveStatus'
  void CatchChildLeaveStatus(void);
       ^
In file included from /usr/include/samba-4.0/ndr.h:30:0,
                  from ../src/providers/ad/ad_domain_info.c:28:
/usr/include/samba-4.0/samba_util.h:115:8: note: previous declaration of 
'CatchChildLeaveStatus' was here
  void (*CatchChildLeaveStatus(void))(int);




More information about the sssd-devel mailing list