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.stanojkovic(a)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 <lslebodn(a)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.stanojkovic(a)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 <lslebodn(a)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.stanojkovic(a)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.