Messages in this thread | | | Date | Sun, 5 Feb 2006 11:50:37 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH -mm] swsusp: freeze user space processes first |
| |
* Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > The logic in that loop makes my brain burst. > > > > What happens if a process does vfork();sleep(100000000)? > > The freezing of processes will fail due to the timeout. > > Without the if (!p->vfork_done) it would fail too, because the child > would be frozen and the parent would wait for the vfork completion in > the TASK_UNINTERRUPTIBLE state (ie. unfreezeable). But in that case > we have a race between the "freezer" and the child process (ie. if the > child gets frozen before it completes the vfork completion, the paret > will be unfreezeable) which sometimes leads to a failure when it > should not. [We have a test case showing this.]
then i'd suggest to change the vfork implementation to make this code freezable. Nothing that userspace does should cause freezing to fail. If it does, we've designed things incorrectly on the kernel side.
Ingo - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |