9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] wait race?
@ 2006-12-15 23:08 erik quanstrom
  2006-12-15 23:46 ` matt
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: erik quanstrom @ 2006-12-15 23:08 UTC (permalink / raw)
  To: 9fans

this command frequently hangs on my terminal
	for(i in `{seq 1 $n}){echo fu>/dev/null&}

i've tried n=50 and n=150.  

acid says the shell is doing this

acid: lstk()
await()+0x7 /sys/src/libc/9syscall/await.s:5
wait()+0x1b /sys/src/libc/9sys/wait.c:13
	buf=0x36373031
	fld=0xdfffcc04
	l=0x35188
	w=0x35190
Waitfor(pid=0x2ae1)+0xb4 /usr/quanstro/src/rc/plan9.c:211
	w=0x35190
	p=0x36e70
	errbuf=0x353a4
Xbackq()+0x158 /usr/quanstro/src/rc/havefork.c:120
	wd=0x303531
	ewd=0xdfffeeef
	stop=0x1dd10
	pfd=0x5
	f=0x35190
	s=0xdfffceef
	v=0x36e70
	c=0xa
	pid=0x2ae1
main(argc=0x1,argv=0xdfffefb4)+0x327 /usr/quanstro/src/rc/exec.c:184
	rcmain=0x1642c
	num=0x35343031
	bootstrap=0x2
	i=0x0
_main+0x31 /sys/src/libc/386/main9.s:16

is this a race, or am i missing something?  (p9p rc does not
hang doing the same thing.)

- erik


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] wait race?
  2006-12-15 23:08 [9fans] wait race? erik quanstrom
@ 2006-12-15 23:46 ` matt
  2006-12-16  0:51 ` geoff
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 14+ messages in thread
From: matt @ 2006-12-15 23:46 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs


>this command frequently hangs on my terminal
>
stop running it then :)



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] wait race?
  2006-12-15 23:08 [9fans] wait race? erik quanstrom
  2006-12-15 23:46 ` matt
@ 2006-12-16  0:51 ` geoff
  2006-12-16  1:11 ` matt
  2006-12-16  2:12 ` [9fans] wait race? Russ Cox
  3 siblings, 0 replies; 14+ messages in thread
From: geoff @ 2006-12-16  0:51 UTC (permalink / raw)
  To: 9fans

The cited command doesn't hang my terminal (700MHz Pentium III).
You're not seeing "no procs" messages, are you?  What constitutes a
`hang', given that you can run acid?

The rc binary on sources is older than the sources, so I've pushed out
a current binary, though I don't expect it to fix this problem.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] wait race?
  2006-12-15 23:08 [9fans] wait race? erik quanstrom
  2006-12-15 23:46 ` matt
  2006-12-16  0:51 ` geoff
@ 2006-12-16  1:11 ` matt
  2006-12-17 16:24   ` [9fans] ,m0 Matt
  2006-12-16  2:12 ` [9fans] wait race? Russ Cox
  3 siblings, 1 reply; 14+ messages in thread
From: matt @ 2006-12-16  1:11 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

i tried n = 50, 150 & 500

50 & 150 worked fine

500 it stalled on first time so I killed it and re-ran and it was fine 
for 200, 300, 400, 500, 1500

my plan9 is quite old though, it's still kfs for instance


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] wait race?
  2006-12-15 23:08 [9fans] wait race? erik quanstrom
                   ` (2 preceding siblings ...)
  2006-12-16  1:11 ` matt
@ 2006-12-16  2:12 ` Russ Cox
  2006-12-16  3:26   ` erik quanstrom
  2006-12-16 14:55   ` Steve Simon
  3 siblings, 2 replies; 14+ messages in thread
From: Russ Cox @ 2006-12-16  2:12 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

> 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


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] wait race?
  2006-12-16  2:12 ` [9fans] wait race? Russ Cox
@ 2006-12-16  3:26   ` erik quanstrom
  2006-12-16  4:43     ` Russ Cox
  2006-12-16 14:55   ` Steve Simon
  1 sibling, 1 reply; 14+ messages in thread
From: erik quanstrom @ 2006-12-16  3:26 UTC (permalink / raw)
  To: 9fans, Russ Cox

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" <rsc@swtch.com> 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


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] wait race?
  2006-12-16  3:26   ` erik quanstrom
@ 2006-12-16  4:43     ` Russ Cox
  0 siblings, 0 replies; 14+ messages in thread
From: Russ Cox @ 2006-12-16  4:43 UTC (permalink / raw)
  To: erik quanstrom; +Cc: 9fans

I pushed a new /sys/src/9/port/proc.c
that fixes the underlying kernel bug (nothing to do with child notes)
as well as a new /sys/src/cmd/rc/havefork.c
that avoids tickling it.

Russ


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] wait race?
  2006-12-16  2:12 ` [9fans] wait race? Russ Cox
  2006-12-16  3:26   ` erik quanstrom
@ 2006-12-16 14:55   ` Steve Simon
  1 sibling, 0 replies; 14+ messages in thread
From: Steve Simon @ 2006-12-16 14:55 UTC (permalink / raw)
  To: 9fans

>> for(i in `{seq 1 $n}){echo fu>/dev/null&}

> If you can reproduce the "hang", can you run ps and see if
> the pid that rc is waiting for.

I can reproduce this quite easily, with n=150,
one time in three the script hangs.

Waitfor seems to be waiting for a proc which has already exited.

felix% acid 63541
/proc/63541/text:386 plan 9 executable

/sys/lib/acid/port
/sys/lib/acid/386
acid: lstk()
await()+0x7 /sys/src/libc/9syscall/await.s:5
wait()+0x1b /sys/src/libc/9sys/wait.c:13
	buf=0x35323536
	fld=0xdfffcc04
	l=0x33930
	w=0x33938
Waitfor(pid=0xff7e)+0xb4 /sys/src/cmd/rc/plan9.c:210
	w=0x33938
	p=0x36538
	errbuf=0x33b4c
Xbackq()+0x158 /sys/src/cmd/rc/havefork.c:120
	wd=0x303531
	ewd=0xdfffeeef
	stop=0x1d958
	pfd=0x5
	f=0x33938
	s=0xdfffceef
	v=0x36538
	c=0xa
	pid=0xff7e
main(argc=0x1,argv=0xdfffefb4)+0x327 /sys/src/cmd/rc/exec.c:184
...

0xff7e == 65406

felix% ps
...
steve         63540    0:00   0:00      252K Await    rc
steve         63541    0:00   0:00      252K Await    rc
steve         63546    0:00   0:00      164K Pread    stats
steve         63547    0:00   0:00      168K Pread    stats
steve         63548    0:00   0:00      140K Pread    clock
steve         63549    0:00   0:00      140K Sleep    clock
steve         63550    0:00   0:00      376K Sleep    faces
steve         63551    0:00   0:00      376K Pread    faces
steve         63805    0:00   0:00     1116K Await    rio
steve         63806    0:00   0:00      252K Await    rc
steve         63807    0:00   0:00      124K Pread    nedmail
steve         63960    0:00   0:00     1116K Await    rio
steve         63961    0:00   0:00      252K Await    rc
steve         65153    0:00   0:00        8K Sleep    sleep
steve         65226    0:00   0:00     1116K Await    rio
steve         65227    0:00   0:00      252K Await    rc
steve         65228    0:00   0:00      228K Pread    sam
steve         65229    0:00   0:00      320K Rendez   samterm
steve         65230    0:00   0:00      320K Pread    samterm
steve         65231    0:00   0:00      320K Pread    samterm
steve         65232    0:00   0:00      320K Pread    samterm
steve         65233    0:00   0:00      320K Pread    samterm
steve         65251    0:00   0:00     1116K Await    rio
steve         65252    0:00   0:00      252K Await    rc
steve         65253    0:00   0:00      124K Pread    nedmail
steve         65419    0:00   0:00      200K Pread    ps
felix% 


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [9fans] ,m0
  2006-12-16  1:11 ` matt
@ 2006-12-17 16:24   ` Matt
  2006-12-17 16:40     ` Rob Pike
  0 siblings, 1 reply; 14+ messages in thread
From: Matt @ 2006-12-17 16:24 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

term% echo '1
    2
    3
    4
    5' > h
term% ed h
10
,m0
,
1
2
3
4
5
q
term % echo Hey Brucee time for more beer, 35 seems not to have been 
enough, that doesn't look reversed to me!





^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] ,m0
  2006-12-17 16:24   ` [9fans] ,m0 Matt
@ 2006-12-17 16:40     ` Rob Pike
  2006-12-17 16:41       ` Rob Pike
  0 siblings, 1 reply; 14+ messages in thread
From: Rob Pike @ 2006-12-17 16:40 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

On 12/17/06, Matt <mattmobile@proweb.co.uk> wrote:
> term% echo '1
>     2
>     3
>     4
>     5' > h
> term% ed h
> 10
> ,m0
> ,
> 1
> 2
> 3
> 4
> 5
> q
> term % echo Hey Brucee time for more beer, 35 seems not to have been
> enough, that doesn't look reversed to me!
>
>
>
>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] ,m0
  2006-12-17 16:40     ` Rob Pike
@ 2006-12-17 16:41       ` Rob Pike
  2006-12-17 17:01         ` Matt
  2006-12-17 17:03         ` Paul Lalonde
  0 siblings, 2 replies; 14+ messages in thread
From: Rob Pike @ 2006-12-17 16:41 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

why would moving everything as a block reverse it?
try
   g/./m0

-rob


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] ,m0
  2006-12-17 16:41       ` Rob Pike
@ 2006-12-17 17:01         ` Matt
  2006-12-17 17:03         ` Paul Lalonde
  1 sibling, 0 replies; 14+ messages in thread
From: Matt @ 2006-12-17 17:01 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

See Rob, that's why we needed you in the pub, looks like Brucee owes 
Uriel a beer
> why would moving everything as a block reverse it?
> try
>   g/./m0
>
> -rob
>



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] ,m0
  2006-12-17 16:41       ` Rob Pike
  2006-12-17 17:01         ` Matt
@ 2006-12-17 17:03         ` Paul Lalonde
  2006-12-17 23:07           ` Bruce Ellis
  1 sibling, 1 reply; 14+ messages in thread
From: Paul Lalonde @ 2006-12-17 17:03 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

That doesn't match blank lines.
g/^/m0

On 17-Dec-06, at 8:41 AM, Rob Pike wrote:

> why would moving everything as a block reverse it?
> try
>   g/./m0
>
> -rob

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)

iD8DBQFFhXh/pJeHo/Fbu1wRArvKAKCOxUAoTSDSQk3LDsbJHsiVwbU7bACgo9Mv
p0RmeokFuPdTHaEpPzbmFtg=
=0E0e
-----END PGP SIGNATURE-----


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [9fans] ,m0
  2006-12-17 17:03         ` Paul Lalonde
@ 2006-12-17 23:07           ` Bruce Ellis
  0 siblings, 0 replies; 14+ messages in thread
From: Bruce Ellis @ 2006-12-17 23:07 UTC (permalink / raw)
  To: Fans of the OS Plan 9 from Bell Labs

it had the appropriate effect. confused everyone.
i did hesitate when i gave you the solution saying
that i couldn't remember if it was right. it took a
while to get the right wording out of uriel but he
did end up unwittingly saying some very funny things.

brucee

On 12/18/06, Paul Lalonde <plalonde@telus.net> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> That doesn't match blank lines.
> g/^/m0
>
> On 17-Dec-06, at 8:41 AM, Rob Pike wrote:
>
> > why would moving everything as a block reverse it?
> > try
> >   g/./m0
> >
> > -rob
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.5 (Darwin)
>
> iD8DBQFFhXh/pJeHo/Fbu1wRArvKAKCOxUAoTSDSQk3LDsbJHsiVwbU7bACgo9Mv
> p0RmeokFuPdTHaEpPzbmFtg=
> =0E0e
> -----END PGP SIGNATURE-----
>


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2006-12-17 23:07 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-12-15 23:08 [9fans] wait race? erik quanstrom
2006-12-15 23:46 ` matt
2006-12-16  0:51 ` geoff
2006-12-16  1:11 ` matt
2006-12-17 16:24   ` [9fans] ,m0 Matt
2006-12-17 16:40     ` Rob Pike
2006-12-17 16:41       ` Rob Pike
2006-12-17 17:01         ` Matt
2006-12-17 17:03         ` Paul Lalonde
2006-12-17 23:07           ` Bruce Ellis
2006-12-16  2:12 ` [9fans] wait race? Russ Cox
2006-12-16  3:26   ` erik quanstrom
2006-12-16  4:43     ` Russ Cox
2006-12-16 14:55   ` Steve Simon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).