From owner-java@jp.FreeBSD.org Tue Sep 10 12:55:52 2002
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id g8A3tqW12047;
	Tue, 10 Sep 2002 12:55:52 +0900 (JST)
	(envelope-from owner-java@jp.FreeBSD.org)
Received: from mx1.aist.go.jp (mx1.aist.go.jp [150.29.246.133])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet id g8A3tp312042
	for <java@jp.FreeBSD.org>; Tue, 10 Sep 2002 12:55:51 +0900 (JST)
	(envelope-from shudo@computer.org)
Received: from rpsmtp1.aist.go.jp
	by mx1.aist.go.jp  with ESMTP id g8A3tob12682
	for <java@jp.FreeBSD.org>; Tue, 10 Sep 2002 12:55:51 +0900 (JST)
	env-from (shudo@computer.org)
Received: from mail01.aist.go.jp
        by rpsmtp1.aist.go.jp  with ESMTP id g8A3toK19186
        for <java@jp.FreeBSD.org>; Tue, 10 Sep 2002 12:55:50 +0900 (JST)
        env-from (shudo@computer.org)
Received: from aist.go.jp
        by mail01.aist.go.jp  with ESMTP id g8A3too28414
        for <java@jp.FreeBSD.org>; Tue, 10 Sep 2002 12:55:50 +0900 (JST)
        env-from (shudo@computer.org)
Message-Id: <20020910.125647.971160378.shudoh@localhost>
To: java@jp.FreeBSD.org
From: shudo@computer.org
In-Reply-To: <sqb1y831bgf.wl@nue.mac.com>
References: <20020829131407.4f3c16ad.daichi@jp.freebsd.org>
	<20020830.152855.846933591.shudoh@localhost>
	<sqb1y831bgf.wl@nue.mac.com>
X-Mailer: Mew version 2.2 on XEmacs 21.4.8 (Honest Recruiter)
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
 boundary="--Next_Part(Tue_Sep_10_12:56:47_2002_151)--"
Content-Transfer-Encoding: 7bit
Reply-To: java@jp.FreeBSD.org
Precedence: list
Date: Tue, 10 Sep 2002 12:56:47 +0900
X-Sequence: java 222
Subject: [java 222] Re: Java Memory Model
Errors-To: owner-java@jp.FreeBSD.org
Sender: owner-java@jp.FreeBSD.org
X-Originator: shudo@computer.org
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+020902

----Next_Part(Tue_Sep_10_12:56:47_2002_151)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

$B<sF#$G$9!#(B

$B$3$J$+$5$s(B wrote:

> {per thread and/or $BDL>o(B} $B$N(B stack segment $B$K(B PROT_EXEC
> $B$,$D$$$F$$$k$N$O$J$<$J$N$G$7$g$&$M!)(B (buffer overrun
> $B$J$I$N(B security $BLdBj$+$i8+$k$H$H$F$b2x$7$$@_Dj(B) $B$H0JA0(B
> $BJ9$$$?$i(B - $B$?$H$($P(B sigtramp $B$GMW$k$+$i(B - $B$H$$$&$3$H$@$C(B
> $B$?$N$G$9$1$I!"$=$l$G$b$J$*2x$7$$$h$&$J46$8$,$7$F$7$^$$$^$9!#(B

signal trampoline $B$NB>$K$b!D(B  GCC $B$,EG$/%3!<%I$,!"(B
$B<B9T;~$K%9%?%C%/>e$K%3!<%I(B (trampoline) $B$r:n$k$3$H$,$"$j$^$9!#(B

$BE:IU%3!<%I(B (nested_func.c) $B$G$O!"(B
main() $B$,%9%?%C%/>e$K%3!<%I$r:n$j$^$9!#(B

inner $B4X?t(B (nested_func()) $B$O!"4X?t%]%$%s%?$rDL$7$F8F$S=P$5$l$?:]$G$b(B
$B4X?t%]%$%s%?$,:n$i$l$?J8L.(B (main()) $B$N%m!<%+%kJQ?t(B (i) $B$K(B
$B%"%/%;%9$9$kI,MW$,$"$k$N$G!D(B
$B4X?t%]%$%s%?$H$7$F!"(Bnested_func() $B$N%"%I%l%9$,D>@\;H$o$l$k$N$G$O$J$/$F!"(B
nested_func() $B$r8F$V$h$&$K:n$i$l$?%9%?%C%/>e$N(B trampoline $B$,(B
$B4X?t%]%$%s%?$H$7$F;H$o$l$^$9!#(B

Kazuyuki Shudo/$B<sF#0l9,(B   $B;d$r$?$P$M$J$$$G(B $B$"$i$;$$$H$&$N2V$N$h$&$K(B
  shudo@computer.org   http://www.shudo.net/

----Next_Part(Tue_Sep_10_12:56:47_2002_151)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="nested_func.c"

#include <stdio.h>

void another_func(void (*func)()) {
  func();
}

int main(int argc, char **argv) {
  int i = argc;

  void nested_func() {
    printf("%d\n", i);
  }

  another_func(nested_func);

  return 0;
}

----Next_Part(Tue_Sep_10_12:56:47_2002_151)----
