russ,

you're spot-on, as per usual.  obvously, debugging when tired is
a dangerous thing for me.  i should have noticed the things you've 
pointed out right away.  the second or third cut-and-paste of that
command sequence usually does hang rc, which DEL fixes.

tomorrow, i will try to reproduce things.  (it was quite reliable.)
and see if i can get some more information.

the return value of write /sys/src/cmd/seq,c:84 & 92 is not checked,
but as you noted, that might not be the full story.

- erik

"Russ Cox" <[EMAIL PROTECTED]> writes

| 
| > this command frequently hangs on my terminal
| >         for(i in `{seq 1 $n}){echo fu>/dev/null&}
| 
| The back trace looks like rc is still trying to run seq
| (it is in Xbackq, which is running the backquote expression)
| and has not even gotten to the interesting part.
| 
| I might believe that if you ran two in a row:
| 
|           for(i in `{seq 1 $n}){echo fu>/dev/null&}
|           for(i in `{seq 1 $n}){echo fu>/dev/null&}
| 
| then that would make it hanging like that much more likely.
| 
| But what it might have seen instead is a read returning -1
| because it was interrupted by a sys: child note.  So seq might
| not actually be done.  That being said, there would still have to
| be a bug in the kernel (or seq), since rc has closed the pipe end
| that it is reading at that point, so seq shouldn't be blocked trying
| to write to it.
| 
| If you can reproduce the "hang", can you run ps and see if
| the pid that rc is waiting for (it's in the argument to Waitfor
| in the stack trace) is still running?  If so, what's that guy doing,
| and is it sed or is it rc?
| 
| Russ

Reply via email to