mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-29 12:49:08 +00:00
Shell: Make the ENSURE_WAITID_ONCE requirements a bit less strict
waitid() *may* be called many times if a job does not exit, so only assert this fact when the job has in fact exited. Also allows Background nodes to contain non-execute nodes.
This commit is contained in:
committed by
Andreas Kling
parent
8de70e8ce7
commit
9ad858bcbf
@@ -1443,7 +1443,16 @@ void Shell::notify_child_event()
|
||||
}
|
||||
found_child = true;
|
||||
#ifdef ENSURE_WAITID_ONCE
|
||||
s_waited_for_pids.set(child_pid);
|
||||
// NOTE: This check is here to find bugs about our assumptions about waitpid(),
|
||||
// it does not hold in general, and it definitely does not hold in the long run.
|
||||
// Reasons that we would call waitpid() more than once:
|
||||
// - PID reuse/wraparound: This will simply fail the assertion, ignored here.
|
||||
// - Non-terminating unblocks:
|
||||
// - Suspension: (e.g. via ^Z)
|
||||
// - ?
|
||||
// - ?
|
||||
if (job.exited())
|
||||
s_waited_for_pids.set(child_pid);
|
||||
#endif
|
||||
}
|
||||
if (job.should_be_disowned())
|
||||
|
||||
Reference in New Issue
Block a user