David T. Lewis schrieb:
> On Mon, Mar 10, 2008 at 11:13:42AM -0700, Andreas Raab wrote:
>>> We have a situation where some code reliably locks up when used like here:
>>>> p := OSProcess command: 'chmod +x ', path.
>> [p isComplete] whileFalse.
>>>> This hangs quite reliably in the second line and I'm *assuming* that we
>> need to yield/delay execution while waiting. Is this correct? I was
>> trying to trace through the code paths which update the runState but it
>> wasn't immediately clear where this comes from.
>>>> Hi Andreas,
>> Yes, you should add a delay in the loop, or use this (which adds the
> delay for you):
>> p := OSProcess waitForCommand: 'chmod +x ', path
>> The run state of an external OS process is updated by a separate Squeak
> process (evaluate "OSProcess accessor grimReaperProcess"), so you need
> to wait for the grimReaperProcess to react to the external process
> exit notification.
This sounds like the grimReaperProcess should be given higher priority
so it would not be starved by a busy-waiting foreground process.
I'd suggest at least Processor lowIPPriority.
Cheers,
Hans-Martin