<html><head><base href="x-msg://438/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div><font class="Apple-style-span" color="#0000FF" face="'Gill Sans'"><span class="Apple-style-span" style="font-size: medium;">Hmm.  So, maybe it is OK.  What I was concerned about was whether they were safe to call inside the signal handler.  Also, I note that setjmp/longjmp should also be checked for Itanium -- there we also have to worry about the register backing store which is not even in the stack as I understand it.  Take a look at the Boehm collector sources to see how they handle it there.  I'm OK with putting back setjmp/longjmp on the basis of what you've found....</span></font></div></span></span></span></span></span></span></span></span></div></span></span>
</div>
<br><div><div>On 25 Nov 2009, at 21:03, Jay K wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div class="hmmessage" style="font-size: 10pt; font-family: Verdana; ">> longjmp is MT-Level unsafe.<br><br>Tony, I see that now in the docs, but doesn't that sound very wierd and incorrect?<br> <br> /usr/sfw/bin/gobjdump -D /lib/libc.so > 1.txt<br>vi 1.txt<br> <br>000314fc <_setjmp>:<br>   314fc:       c0 22 20 00     clr  [ %o0 ]<br>   31500:       dc 22 20 04     st  %sp, [ %o0 + 4 ]<br>   31504:       92 03 e0 08     add  %o7, 8, %o1<br>   31508:       d2 22 20 08     st  %o1, [ %o0 + 8 ]<br>   3150c:       fc 22 20 0c     st  %fp, [ %o0 + 0xc ]<br>   31510:       fe 22 20 10     st  %i7, [ %o0 + 0x10 ]<br>   31514:       81 c3 e0 08     retl<br>   31518:       90 10 00 00     mov  %g0, %o0<br><br><br>0003151c <_longjmp>:<br>    151c:       91 d0 20 03     ta  3<br>   31520:       d4 02 20 04     ld  [ %o0 + 4 ], %o2<br>   31524:       e0 1a a0 00     ldd  [ %o2 ], %l0<br>   31528:       e4 1a a0 08     ldd  [ %o2 + 8 ], %l2<br>   3152c:       e8 1a a0 10     ldd  [ %o2 + 0x10 ], %l4<br>   31530:       ec 1a a0 18     ldd  [ %o2 + 0x18 ], %l6<br>   31534:       f0 1a a0 20     ldd  [ %o2 + 0x20 ], %i0<br>   31538:       f4 1a a0 28     ldd  [ %o2 + 0x28 ], %i2<br>   3153c:       f8 1a a0 30     ldd  [ %o2 + 0x30 ], %i4<br>   31540:       fc 02 20 0c     ld  [ %o0 + 0xc ], %fp<br>   31544:       9c 10 00 0a     mov  %o2, %sp<br>   31548:       fe 02 20 10     ld  [ %o0 + 0x10 ], %i7<br>   3154c:       d6 02 20 08     ld  [ %o0 + 8 ], %o3<br>   31550:       80 90 00 09     tst  %o1<br>   31554:       12 80 00 03     bne  31560 <_longjmp+0x44><br>   31558:       9e 22 e0 08     sub  %o3, 8, %o7<br>   3155c:       92 10 20 01     mov  1, %o1<br>   31560:       81 c3 e0 08     retl<br>   31564:       90 10 00 09     mov  %o1, %o0<br><br>I'll step through calls to them see if they look the same (network problems..)<br><br> - Jay<br><br> <br>> Date: Thu, 26 Nov 2009 01:31:53 +0000<br>> To:<span class="Apple-converted-space"> </span><a href="mailto:m3commit@elegosoft.com">m3commit@elegosoft.com</a><br>> From:<span class="Apple-converted-space"> </span><a href="mailto:hosking@elego.de">hosking@elego.de</a><br>> Subject: [M3commit] CVS Update: cm3<br>><span class="Apple-converted-space"> </span><br>> CVSROOT: /usr/cvs<br>> Changes by: hosking@birch. 09/11/26 01:31:53<br>><span class="Apple-converted-space"> </span><br>> Modified files:<br>> cm3/m3-libs/m3core/src/thread/PTHREAD/: ThreadPThread.i3<span class="Apple-converted-space"> </span><br>> ThreadPThread.m3<span class="Apple-converted-space"> </span><br>> ThreadPThreadC.c<span class="Apple-converted-space"> </span><br>><span class="Apple-converted-space"> </span><br>> Log message:<br>> Restore SPARC SaveRegsInStack implementation.<br>> longjmp is MT-Level unsafe.<br>> Not sure what this says about setjmp -- Boehm doesn't appear to process any<br>> context other than the stacks.<br>><span class="Apple-converted-space"> </span><br></div></span></blockquote></div><br></body></html>