On Tue, Sep 8, 2009 at 11:49 PM, Subrata
Modak<[email protected]> wrote:
> On Wed, 2009-09-09 at 10:48 +0530, Suzuki Poulose wrote:
>> Li Zefan wrote:
>> > Suzuki Poulose wrote:
>> >> Hi,
>> >>
>> >> There is a testcase issue in the event_generator code. The gen_fork() is
>> >> called to generate the fork event.
>> >>
>> >> The child process prints the following message:
>> >>
>> >> static inline void gen_fork(void)
>> >> {
>> >>         pid_t pid;
>> >>         int status;
>> >>
>> >>         pid = fork();
>> >>         if (pid == 0) {
>> >>                 printf("fork parent: %d, child: %d\n", getppid(),
>> >> getpid());
>> >>                 exit(0);
>> >>         } else if (pid < 0) {
>> >>                 fprintf(stderr, "fork() failed\n");
>> >>                 exit(1);
>> >>         }
>> >> }
>> >>
>> >> Now the parent process just exits after this call. So, if the child
>> >> doesn't get to run before parent exits, the child will see the ppid as
>> >> 1, that of INIT and this contradicts the actual data. Hence the test 
>> >> fails.
>> >>
>> >> Attached patch fixes the issue. I have verified the same. Please apply.
>> >>
>> >
>> > Thanks for fixing it.
>> >
>> > Acked-by: Li Zefan <[email protected]>
>> >
>> > But you forgot to add your Signed-off-by in the patch. ;)
>> >
>> Ah! Thanks for catching that ! Re-attaching it ;)
>>
>> Thanks
>>
>> Suzuki
>> plain text document attachment
>> (connectors-gen_fork-wait-for-child.diff)
>> gen_fork() event should wait until the child exits. Otherwise the child 
>> would see INIT as the parent and
>> end up in collecting wrong information to compare with.
>>
>>
>> Signed-off-by: Suzuki K P <[email protected]>
>
> Thanks.
>
> Regards--
> Subrata
>
>> Acked-by: Li Zefan <[email protected]>
>>
>> Index: ltp/testcases/kernel/connectors/pec/event_generator.c
>> ===================================================================
>> --- ltp.orig/testcases/kernel/connectors/pec/event_generator.c        
>> 2008-10-22 13:40:31.000000000 +0000
>> +++ ltp/testcases/kernel/connectors/pec/event_generator.c     2009-09-08 
>> 13:52:14.000000000 +0000
>> @@ -25,6 +25,9 @@
>>  #include <stdlib.h>
>>  #include <stdio.h>
>>  #include <pwd.h>
>> +#include <sys/types.h>
>> +#include <sys/wait.h>
>> +
>>  #include "test.h"
>>
>>  #define DEFAULT_EVENT_NUM       1
>> @@ -94,6 +97,7 @@
>>  static inline void gen_fork(void)
>>  {
>>       pid_t pid;
>> +     int status;
>>
>>       pid = fork();
>>       if (pid == 0) {
>> @@ -102,6 +106,8 @@
>>       } else if (pid < 0) {
>>               fprintf(stderr, "fork() failed\n");
>>               exit(1);
>> +     } else {  /* Parent should wait for the child */
>> +             wait(&status);
>>       }
>>  }

Sorry -- this really could have been done `better' with waitpid
because you wouldn't need the extra status field.
Thanks,
-Garrett

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to