On Thu, Sep 10, 2015 at 10:49:17AM +0200, Lukas Slebodnik wrote:
> On (10/09/15 10:43), Lukas Slebodnik wrote:
> >On (28/07/14 10:18), Simo Sorce wrote:
> >>On Wed, 2014-07-23 at 09:01 +0200, Lukas Slebodnik wrote:
> >>> On (09/07/14 18:21), Jurica Stanojkovic wrote:
> >>> >
> >>> >Hello,
> >>> >
> >>> >Package sssd_1.11.5.1-1 on Debian FTBFS for mips and mipsel.
> >>> >https://buildd.debian.org/status/fetch.php?pkg=sssd&arch=mips&ver=1.11.5.1-1&stamp=1399675946
> >>> >https://buildd.debian.org/status/fetch.php?pkg=sssd&arch=mipsel&ver=1.11.5.1-1&stamp=1399663454
> >>> >
> >>> >dyndns_test_ok is failing with following log:
> >>> >[ RUN      ] dyndns_test_ok(Tue Jul  8 15:53:55:004476 2014) [sssd] 
> >>> >[be_nsupdate_args] (0x0200): (Tue Jul  8 15:53:55:004521 2014) [sssd] 
> >>> >[child_handler_setup] (0x2000): nsupdate auth type: GSS-TSIGSetting up 
> >>> >signal handler up for pid [21397](Tue Jul  8 15:53:55:004693 2014) 
> >>> >[sssd] [__wrap_execv] (0x0200): nsupdate success test case(Tue Jul  8 
> >>> >15:53:55:004825 2014) [sssd] [__wrap_execv] (0x1000): Child exiting with 
> >>> >status 0(Tue Jul  8 15:53:55:005275 2014) [sssd] [child_handler_setup] 
> >>> >(0x2000): Signal handler set up for pid [21397](Tue Jul  8 
> >>> >15:54:55:837623 2014) [sssd] [write_pipe_handler] (0x0020): write failed 
> >>> >[32][Broken pipe].(Tue Jul  8 15:54:55:837801 2014) [sssd] 
> >>> >[nsupdate_child_stdin_done] (0x1000): Sending nsupdate data complete(Tue 
> >>> >Jul  8 15:54:55:837869 2014) [sssd] [nsupdate_child_stdin_done] 
> >>> >(0x0040): Sending nsupdate data failed [32]: Broken pipe(Tue Jul  8 
> >>> >15:54:55:837947 2014) [sssd] [be_nsupdate_done] (0x0040): nsupdate child 
> >>> >execution failed [1432158228]: Dynamic DNS update failed(Tue Jul  8 
> >>> >15:54:55:837985 2014) [sssd] [dyndns_test_ok] (0x1000): Child request 
> >>> >returned [1432158228]: Unknown error 14321582280x555d0014 != 
> >>> >0../src/tests/cmocka/test_dyndns.c:222: error: Failure![  FAILED  ] 
> >>> >dyndns_test_okChild part has finished before the child handler was 
> >>> >created.
> >>> >
> >>> >I have created and attached a patch which is workaround for this issue.
> >>> >Could someone please take a look and comment this?
> >>> >
> >>> >Thank you!
> >>> >
> >>> >Sincerely,
> >>> >Jurica
> >>> > 
> >>> 
> >>> >From d6162e90d89b744153bff068488a555047a9004e Mon Sep 17 00:00:00 2001
> >>> >From: Jurica Stanojkovic <jurica.stanojko...@rt-rk.com>
> >>> >Date: Wed, 9 Jul 2014 17:57:55 +0200
> >>> >Subject: [PATCH] Workaround for dyndns_test_ok failiure on mips(el).
> >>> > Child part has finished before the child handler was created.
> >>> >
> >>> >---
> >>> bump.
> >>> 
> >>> Could someone review this patch.
> >>> I was helping with this problem on IRC. I don't want to give ACK.
> >>
> >>Well the commit message does not say why a sleep of 2 seconds is needed,
> >>can you shed a light on it ?
> >>
> >Updated version is attached.
> >
> >LS
> 
> >From 80c25a192f2a410e18248f848a2256803e997c6b Mon Sep 17 00:00:00 2001
> >From: Lukas Slebodnik <lsleb...@redhat.com>
> >Date: Thu, 10 Sep 2015 10:42:02 +0200
> >Subject: [PATCH] dyndns-tests: Simulate job in wrapped execv
> >
> >The function be_nsupdate_send fork a child for execution of the utility
> >nsupdate.
> >
> >The child process builds nsupdate args in the function
> >be_nsupdate_args and then execute the utility.
> >
> >Meanwhile the parent process register handlers for child and timeout
> >for canceling the long lasting child.
> >   nsupdate_child_send -> child_handler_setup
> >
> >You can see in following log file that the wrapped version of execv
> >function might be very fast and therefore parent can register handlers
> >after finishing child. This is a reason why there is a child timeout.
> >
> >(10:18:48:556001 2015) [sssd] [be_nsupdate_args] (0x0200): nsupdate auth 
> >type: GSS-TSIG
> >(10:18:48:556126 2015) [sssd] [__wrap_execv] (0x0200): nsupdate success test 
> >case
> >(10:18:48:556200 2015) [sssd] [__wrap_execv] (0x1000): Child exiting with 
> >status 0
> >(10:18:48:557218 2015) [sssd] [child_handler_setup] (0x2000): Setting up 
> >signal handler up for pid [3957]
> >(10:18:48:560987 2015) [sssd] [child_handler_setup] (0x2000): Signal handler 
> >set up for pid [3957]
> >(10:18:50:608520 2015) [sssd] [nsupdate_child_timeout] (0x0020): Timeout 
> >reached for dynamic DNS update
> >(10:18:50:681525 2015) [sssd] [be_nsupdate_done] (0x0040): nsupdate child 
> >execution failed [1432158233]: Dynamic DNS update timed out
> >(10:18:50:687031 2015) [sssd] [dyndns_test_ok] (0x1000): Child request 
> >returned [1432158233]: Unknown error 1432158233
> >
> >The patch simulate a work in wrapped function with small delay.
> >It should be enough time for the parent process to registering a child.
> >
> >Based on patch from Jurica Stanojkovic <jurica.stanojko...@rt-rk.com>
> >Thank you.
> >
> >Resolves:
> >https://fedorahosted.org/sssd/ticket/2283
> >---
> > src/tests/cmocka/test_dyndns.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> >diff --git a/src/tests/cmocka/test_dyndns.c b/src/tests/cmocka/test_dyndns.c
> >index 
> >691378ee6edc5b0238adc8404ea0a433ae3cf907..dc3d19f59cf586e3ef4ed12e99192c639c4e45d5
> > 100644
> >--- a/src/tests/cmocka/test_dyndns.c
> >+++ b/src/tests/cmocka/test_dyndns.c
> >@@ -70,6 +70,7 @@ void __wrap_execv(const char *path, char *const argv[])
> >         case MOCK_NSUPDATE_OK:
> >             DEBUG(SSSDBG_FUNC_DATA, "nsupdate success test case\n");
> >             err = 0;
> >+            sleep(2);
> Actually,
> I wanted to use smaller timeout so we can avoid issues with real timeouts.
> 
> another version is attached.
> 
> LS

> From 7e4ec4a744c5714cb7d6c9a22646d5635e8da0c8 Mon Sep 17 00:00:00 2001
> From: Lukas Slebodnik <lsleb...@redhat.com>
> Date: Thu, 10 Sep 2015 10:42:02 +0200
> Subject: [PATCH] dyndns-tests: Simulate job in wrapped execv
> 
> The function be_nsupdate_send fork a child for execution of the utility
> nsupdate.
> 
> The child process builds nsupdate args in the function
> be_nsupdate_args and then execute the utility.
> 
> Meanwhile the parent process register handlers for child and timeout
> for canceling the long lasting child.
>    nsupdate_child_send -> child_handler_setup
> 
> You can see in following log file that the wrapped version of execv
> function might be very fast and therefore parent can register handlers
> after finishing child. This is a reason why there is a child timeout.
> 
> (10:18:48:556001 2015) [sssd] [be_nsupdate_args] (0x0200): nsupdate auth 
> type: GSS-TSIG
> (10:18:48:556126 2015) [sssd] [__wrap_execv] (0x0200): nsupdate success test 
> case
> (10:18:48:556200 2015) [sssd] [__wrap_execv] (0x1000): Child exiting with 
> status 0
> (10:18:48:557218 2015) [sssd] [child_handler_setup] (0x2000): Setting up 
> signal handler up for pid [3957]
> (10:18:48:560987 2015) [sssd] [child_handler_setup] (0x2000): Signal handler 
> set up for pid [3957]
> (10:18:50:608520 2015) [sssd] [nsupdate_child_timeout] (0x0020): Timeout 
> reached for dynamic DNS update
> (10:18:50:681525 2015) [sssd] [be_nsupdate_done] (0x0040): nsupdate child 
> execution failed [1432158233]: Dynamic DNS update timed out
> (10:18:50:687031 2015) [sssd] [dyndns_test_ok] (0x1000): Child request 
> returned [1432158233]: Unknown error 1432158233
> 
> The patch simulate a work in wrapped function with small delay.
> It should be enough time for the parent process to registering a child.
> 
> Based on patch from Jurica Stanojkovic <jurica.stanojko...@rt-rk.com>
> Thank you.

I never could reproduce the failures myself, but this patch is obviously
not harmful and both you and Jurica confirmed it helps, so fine, ACK.
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to