Denys Vlasenko <[email protected]> writes:

> On 03/16/2012 10:53 AM, Nikola Pajkovsky wrote:
>> Jiri Moskovcak<[email protected]>  writes:
>>> On 03/15/2012 05:26 PM, Nikola Pajkovsky wrote:
>>>> Denys Vlasenko<[email protected]>   writes:
>>>> +    pid_t pid = vfork();
>>>> +    if (pid<   0)
>>>> +        perror_msg_and_die("vfork");
>>>> +    if (pid == 0)
>>>> +    {
>>>> +        xmove_fd(fd, STDIN_FILENO);
>>>> +        execvp(prog[0], prog);
>>>> +        perror_msg_and_die("Can't execute '%s'", prog[0]);
>>>> +    }
>>>> +
>>>> +    safe_waitpid(pid, NULL, 0);
>>>>
>>>> I think, we should here check returned value from execvp
>>>> program. Program which SIGSEGV or fails from whatever reason is
>>>> pointless to run.
>>>
>>> - but you need to run it to find out that it doesn't work, so I don't
>>> understand your proposal - you mean if we detect it failed once then
>>> disable it and never try to run it again?
>>
>> try to think what would happen if you have an app with auto start and it
>> fails to start or do some operation (we have inotify). running it over
>> and over doesn't bring you anything good. in worst case it could eat
>> cpu, memory or i/o.
>
> It will start at most once per two seconds. So, yes, it won't be nice,
> but not disastrous either.
>
>> so if execvp(prog[0], prog) return on pid exit != 0, we should stop
>> watch-log
>
> Maybe. Maybe not. Maybe we need to make it optional? 
> (--die-on-worker-failure?)

yup, I like the idea about --die-on-worker-failure.

-- 
Nikola

Reply via email to