From owner-FreeBSD-users-jp@jp.freebsd.org  Wed Oct 17 01:03:40 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id BAA32296;
	Wed, 17 Oct 2001 01:03:40 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from uketsuke.aji-oh.net (uketsuke.aji-oh.net [210.143.137.100])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id BAA32291
	for <FreeBSD-users-jp@jp.freebsd.org>; Wed, 17 Oct 2001 01:03:39 +0900 (JST)
	(envelope-from aji@aji-oh.net)
Received: from xages.aji-oh.net (xages.aji-oh.net [210.143.137.98])
	by uketsuke.aji-oh.net (8.9.3/3.7W1.0) with SMTP id BAA01369
	for FreeBSD-users-jp@jp.freebsd.org; Wed, 17 Oct 2001 01:03:23 +0900
Date: Wed, 17 Oct 2001 01:03:23 +0900
Message-Id: <200110161603.BAA01369@uketsuke.aji-oh.net>
To: FreeBSD-users-jp@jp.freebsd.org
In-Reply-To: Your message of "Tue, 16 Oct 2001 12:31:16 +0900 (JST)".
	<200110160331.MAA14020@oberon.gaia.jaeri.go.jp>
From: aji@aji-oh.net (TANAKA Aji)
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
X-Mailer: mnews [version 1.22PL1] 2000-02/15(Tue)
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: FreeBSD-users-jp 64879
Subject: [FreeBSD-users-jp 64879] Re: pthread
	=?ISO-2022-JP?B?GyRCJSolVyU3JWclcyRyJEQkMSRrJEglUCU5JSgbKEI=?=
	=?ISO-2022-JP?B?GyRCJWkhPBsoQg==?= 
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org
X-Originator: aji@aji-oh.net

$B$?$J$+(B $B$H?=$7$^$9!#(B
$BLLGr$=$&$J%9%l%C%I$J$N$G!"$*$8$c$^$7$^$9!#(B


[FreeBSD-users-jp 64852] Re: pthread$B%*%W%7%g%s$r$D$1$k$H%P%9%(%i!<(B (by huehara $B$5$s(B)
$B$NJ8LL$h$j(B:

>  $B>e86$G$9!%(B
(snip)
>  $BEvJ}$N4D6-!J(B4.0R$B!K$G%G%U%)%k%H$N%9%?%C%/%5%$%:$r3NG'$7$^$7$?$,!$DTMM$N4D(B
>  $B6-$HF1$8$/(B65536byte(64KB)$B$7$+$"$j$^$;$s$G$7$?!%@h$N%a%$%k$KE:IU$7$?%W%m(B
>  $B%0%i%`$O!$(Bint[1024*254]=$BLs(B0.99MB$B$NG[Ns$r3NJ]$7$?>uBV$G6nF0$7$^$7$?$,!"(B
>  $B6v!9F0$$$F$$$?$@$1$+!$%a%$%s%9%l%C%I$G$OFCJL$K(B1MB$B6a$/$^$G%9%?%C%/$r;H$((B
>  $B$k$N$+$bCN$l$^$;$s$M!#(B  

$BB?J,8+4V0c$$$@$H;W$$$^$9$,!"(Blimit or ulimit$B%3%^%s%I$G3NG'$9$k$H(B

    stacksize	65536 kbytes
             	      ^^^^^^
$B$H$J$k$N$G!"(B64MB$B$,>e8B$+$H;W$$$^$9!#(B
$B$G$9$+$i!"Hs%9%l%C%IHG$KHf$Y<B$K>/$J$$NL$G>e8B$r7^$($F$$$k$N$G$O(B
$B$J$$$G$7$g$&$+!#(B


--
$B$G!"$A$g$3$C$H<B83$7$F$_$^$7$?!#(B

$B!t4D6-$O(B4.4-RELEASE + gcc 2.95.3 20010315 $B$G$9!#(B
  $B<B83$K$O855-;v$N%=!<%9$r;H$C$F$$$^$9!#!JJX59>e(B phello.c $B$H$7$F$^$9!K(B

$B#1!K(Bstatic$BHG$r:n$C$F<B9T$7$?$H$3$m!"$d$C$Q$j(BSIGBUS$B$GMn$A$^$7$?!#(B
    $B$?$@$7!"(Bgdb$B$N(Bbacktrace$B7k2L$O$A$g$C$H0c$C$F$F(B

#0  0x805051d in _spinlock_debug ()
#1  0x80580ca in _thread_fd_lock_debug ()
#2  0x8056b83 in fstat ()
#3  0x804d5d2 in __swhatbuf ()
#4  0x804d53e in __smakebuf ()
#5  0x804d4ec in __swsetup ()
#6  0x8048581 in vfprintf ()
#7  0x8048256 in printf ()
#8  0x80481da in main () at phello.c:5
#9  0x8048135 in _start ()

$B$H$J$j$^$9!#(B

$B#2!K(B-g$B%*%W%7%g%s$D$-$G%3%s%Q%$%k$7$?(Blibc_r.a$B$G>l=j$rFCDj$7$?$H$3$m!"(B
    /usr/src/lib/libc_r/uthread/uthread_spinlock.c:87
    $B$H$o$+$j$^$7$?!#$3$s$J2U=j$G$9!#(B

82
83              /*
84               * Try to grab the lock and loop if another thread grabs
85               * it before we do.
86               */
87              while(_atomic_lock(&lck->access_lock)) {
88                      cnt++;
89                      if (cnt > 100) {
90                              char str[256];

    $B$8$c$"!"(Blck$B$NCM!J%]%$%s%?CM!K$,JQ$J$N$+D4$Y$F$_$k$H!"IaDL$G$7$?!#(B
    gdb$B$+$i$O;2>H2DG=$G$7$?!#$3$l$G$O(BSIGBUS$B$O5/$-$J$$$O$:$G$9!#(B

(gdb) p lck
$1 = (spinlock_t *) 0x8082080
(gdb) p *lck
$2 = {access_lock = 0, lock_owner = 0, fname = 0x0, lineno = 0}

$B#3!K$A$g$C$H%]%$%s%H$r$+$($F!"%9%?%C%/$NMM;R$r3NG'$7$F$_$^$7$?!#(B
    $BJQ?t(Bcnt$B$,(Bauto$BJQ?t$J$N$G!"$=$N%"%I%l%9$r3NG'$7$F$_$k$H(B

(gdb) p &cnt
$3 = (int *) 0xbfb0003c

    $B$H$J$j$^$7$?!#(B
    $B$b$N$NK\(B(*1)$B$K$h$k$H!"%9%?%C%/$N!VDl!W$O(B0xbfbfe000$B!"$H$"$k!#(B
    $B>e5-%"%I%l%9$N6aJU$G$"$k(B0xbfb00000$B$,$A$g$&$I(B1MB$BL\$K$"$?$j!"(B
    $B$=$NJI$K$V$A$"$?$C$F(BSIGBUS$B$K$J$C$F$$$k$h$&$J5$$,$7$^$9!#(B

	(*1) FreeBSD$B%+!<%M%kF~Lg(B $B2~DjHG(B

$B#4!K$H$9$k$H!"$I$C$+$G$=$&$$$&@_Dj$r$7$F$k$s$@$m$&!"$H;W$$!#(B
    $B@8@.%3!<%I$rHf3S$7$F$_$^$7$?!#(B

	gcc -S -o phello.s phello.c
	gcc -S -pthread -o phello.s.tmp phello.c

    $B$H$7$F!"(Bphello.s$B$H(Bhello.s.tmp$B$r(Bdiff$B$7$?$i!"F10l$H$$$&7k2L$K(B
    $B$J$j$^$7$?!#(B

    gcc -v$B$G%j%s%/$NMM;R$r3NG'$7$F$_$^$7$?$,!"(B

[$BHs%9%l%C%I(B]
% gcc -v -g -static phello.c
(snip)
GNU assembler version 2.11.2 20010719 [FreeBSD] (i386-unknown-freebsd4) using BFD version 2.11.2 20010719 [FreeBSD]
 /usr/libexec/elf/ld -m elf_i386 -Bstatic /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/libexec/elf -L/usr/libexec -L/usr/lib /tmp/cctxGK73.o -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o

[$B%9%l%C%I(B]
% gcc -v -g -static -pthread -D_THREAD_SAFE phello.c
(snip)
GNU assembler version 2.11.2 20010719 [FreeBSD] (i386-unknown-freebsd4) using BFD version 2.11.2 20010719 [FreeBSD]
 /usr/libexec/elf/ld -m elf_i386 -Bstatic /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/libexec/elf -L/usr/libexec -L/usr/lib /tmp/ccyP1g7j.o -lgcc -lc_r -lgcc /usr/lib/crtend.o /usr/lib/crtn.o

    $B$H$J$j!"%9%?!<%H%"%C%W%k!<%A%s$,F~$lBX$o$C$F$$$k$h$&$K$O(B
    $B8+$($^$;$s!#(B


$B!&!&!&$H!"$3$3$^$G$d$C$F$_$FCN<1$,$D$-$^$7$?!#(B
$B$I$3$G%9%?%C%/%5%$%:$r$$$8$C$F$$$k$N$+8!F$$D$-$^$;$s!#(B
$B%T%s$HMh$kJ}$,$$$^$7$?$i!">pJs$*4j$$$7$^$9!#(B

$B!t$3$N$^$^$G$OM_5aITK~$J$N$G(B X-(


----
$B$?$J$+$($$$8(B (aji@aji-oh.net)
