Re: Bug when using OS_TASK_OPT_STK_CLR with OSTaskCreateExt()
"Tom Collins tom-lnEA/wrDJtNWk0Htik3J/[email protected] [rabbit-semi]" <[email protected]> Mon, 17 Jun 2019 14:20:18 -0700
| Newsgroups | gmane.comp.hardware.rabbit-semiconductor |
|---|---|
| Message-ID | <[email protected]> |
--Apple-Mail=_E542A25F-00DA-40CA-B40C-5C9C12D20267 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Correct, it is only an issue when using uC/OS-II and passing OS_TASK_OPT_ST= K_CLR to OSTaskCreateExt. And even in that case, it=E2=80=99s likely that = the extra overwritten byte wouldn=E2=80=99t have a negative impact =E2=80= =94 it would typically overwrite a byte from another allocated stack, and m= ost programs I=E2=80=99ve seen allocate all of the tasks at startup before = starting the OS. -Tom > On Jun 17, 2019, at 12:58 PM, Steve Trigero seecwriter-/[email protected] [rabbit-= semi] <[email protected]> wrote: >=20 >=20 > Tom, >=20 > Is this only an issue when using uC/OS? >=20 > Steve >=20 > On =E2=80=8EFriday=E2=80=8E, =E2=80=8EJune=E2=80=8E =E2=80=8E14=E2=80=8E,= =E2=80=8E2019=E2=80=8E =E2=80=8E01=E2=80=8E:=E2=80=8E35=E2=80=8E:=E2=80=8E= 18=E2=80=8E =E2=80=8EPM=E2=80=8E =E2=80=8EPDT, Tom Collins tom-lnEA/wrDJtNWk0Htik3J/[email protected]= [rabbit-semi] <[email protected]> wrote: >=20 >=20 >=20=20 > I recently wrapped up an investigation of strange behavior in a customer= =E2=80=99s program on a Rabbit 3000 product. It took some time to track it= down to using the OS_TASK_OPT_STK_CLR option with OSTaskCreateExt(). Both= Dynamic C 9 and 10 were erasing the wrong memory area...=20=20 >=20 >=20 > In the case of Dynamic C 9, it was inefficiently using 16-bit writes and = ultimately erasing one byte beyond the end of the stack allocated for the t= ask. In this customer=E2=80=99s situation, a stack ending at 0x6FFFF would= end up erasing the byte at 0x60000 due to usage of the LDP opcode. >=20 > In Dynamic C 10, it calculated the incorrect starting address for the sta= ck, and would erase one byte before the stack and leave the last byte untou= ched. >=20 > Due to licensing issues, Digi International wasn=E2=80=99t able to includ= e the uC/OS-II source code in the GitHub repository when they released Dyna= mic C libraries and samples as Open Source. This change will be a part of = the Dynamic C 10.72E installer whenever we release it. I intend to include= it as a patch on GitHub for both Dynamic C 9 and 10. >=20 > Here=E2=80=99s the patch for Dynamic C 9: > --- a/Lib/UCOS2/OS_TASK.C > +++ b/Lib/UCOS2/OS_TASK.C > @@ -439,8 +439,6 @@ > auto INT8U err; > auto INT16U i; > auto INT16U pbos; > - auto INT8U upper_nibble; > - auto INT16U lower_16; > auto INT16U stk_size; > auto INT32U PhysAddr; >=20 > @@ -460,25 +458,9 @@ > if (opt & OS_TASK_OPT_STK_CHK) { // See if stack checki= ng has been enabled > if (opt & OS_TASK_OPT_STK_CLR) { // See if stack needs = to be cleared > // Yes, fill the stack= with zeros > - lower_16 =3D (INT16U)PhysAddr; > - upper_nibble =3D (INT8U)(PhysAddr >> 16); > - for (i =3D stk_size; i > 0; i--) { > - #asm > - ld hl,@sp+upper_nibble > - add hl,sp > - ld a,(hl) ;a gets high nibble > - ld hl,@sp+lower_16 > - add hl,sp > - ld hl,(hl) ;hl has lower 16 bits > - push ix > - ld ix,hl ;a:ix 20-bit phys addr for = stack > - bool hl > - ld l,h ;zero hl > - ldp (ix),hl ;write zero into stack > - pop ix > - #endasm > - lower_16--; > - } > + // PhysAddr is the last address of the stack (e.g., ...F= F), so it's > + // necessary to add 1 to get to the starting address of = the stack. > + xmemset(PhysAddr - stk_size + 1, 0, stk_size); > } > } >=20 >=20 > And for Dynamic C 10: > --- a/Lib/Rabbit4000/UCOS2/OS_TASK.C > +++ b/Lib/Rabbit4000/UCOS2/OS_TASK.C > @@ -479,7 +479,9 @@ > if (opt & OS_TASK_OPT_STK_CHK) { // See if stack checki= ng has been enabled > if (opt & OS_TASK_OPT_STK_CLR) { // See if stack needs = to be cleared > // Yes, fill the stack= with zeros > - _f_memset((void __far *)(PhysAddr - stk_size), 0, stk_si= ze); > + // PhysAddr is the last address of the stack (e.g., ...F= F), so it's > + // necessary to add 1 to get to the starting address of = the stack. > + _f_memset((void __far *)(PhysAddr - stk_size + 1), 0, st= k_size); > } > } >=20 >=20 > Please let me know if you have any questions about the original bug, or t= he patches. >=20 > -Tom >=20 >=20 >=20 >=20 --Apple-Mail=_E542A25F-00DA-40CA-B40C-5C9C12D20267 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/htm= l4/strict.dtd"> <html> <head> </head> =20 <body style=3D"background-color: #fff;"> <span style=3D"display:none"> </span> <!--~-|**|PrettyHtmlStartT|**|-~--> <div id=3D"ygrp-mlmsg" style=3D"position:relative;"> <div id=3D"ygrp-msg" style=3D"z-index: 1;"> <!--~-|**|PrettyHtmlEndT|**|-~--> <div id=3D"ygrp-text" > =20=20=20=20=20=20 =20=20=20=20=20=20 <p>Correct, it is only an issue when using uC/OS-II and passing OS_TA= SK_OPT_STK_CLR to OSTaskCreateExt. And even in that case, it=E2=80=99= s likely that the extra overwritten byte wouldn=E2=80=99t have a negative i= mpact =E2=80=94 it would typically overwrite a byte from another allocated = stack, and most programs I=E2=80=99ve seen allocate all of the tasks at sta= rtup before starting the OS.<br class><div class><br class=3D"webkit-block-= placeholder"></div><div class> <span class=3D"Apple-style-span" style=3D"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;text-align: aut= o;text-indent: 0px;"><div class>-Tom</div><br class=3D"Apple-interchange-ne= wline"></span> </div> <div><br class><blockquote type=3D"cite" class><div class>On Jun 17, 2019, = at 12:58 PM, Steve Trigero <a href=3D"mailto:seecwriter-/[email protected]" class>se= ecwriter-/[email protected]</a> [rabbit-semi] <<a href=3D"mailto:rabbit-semi@yaho= ogroups.com" class>[email protected]</a>> wrote:</div><br clas= s=3D"Apple-interchange-newline"><div class><div id=3D"ygrp-mlmsg" style=3D"= font-size: 13px;font-family: Arial, helvetica, clean, sans-serif;font-style= : normal;font-weight: normal;letter-spacing: normal;text-align: start;text-= indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;" cl= ass><div id=3D"ygrp-msg" class><div id=3D"ygrp-text" style=3D"font-family: = Georgia;" class><div style=3D"margin: 0px 0px 1em;" class><br class=3D"webk= it-block-placeholder"></div><div class=3D"ydp6cc53ba1yahoo-style-wrap" styl= e=3D"font-family: "times new roman", "new york", times,= serif;font-size: 16px;"></div><div class=3D"ydp6cc53ba1yahoo-style-wrap" s= tyle=3D"font-family: "times new roman", "new york", tim= es, serif;font-size: 16px;"></div><div class=3D"ydp6cc53ba1yahoo-style-wrap= " style=3D"font-family: "times new roman", "new york", = times, serif;font-size: 16px;">Tom,</div><div class=3D"ydp6cc53ba1yahoo-sty= le-wrap" style=3D"font-family: "times new roman", "new york&= quot;, times, serif;font-size: 16px;"><br class></div><div class=3D"ydp6cc5= 3ba1yahoo-style-wrap" style=3D"font-family: "times new roman", &q= uot;new york", times, serif;font-size: 16px;">Is this only an issue wh= en using uC/OS?</div><div class=3D"ydp6cc53ba1yahoo-style-wrap" style=3D"fo= nt-family: "times new roman", "new york", times, serif;= font-size: 16px;"><br class></div><div class=3D"ydp6cc53ba1yahoo-style-wrap= " style=3D"font-family: "times new roman", "new york", = times, serif;font-size: 16px;">Steve</div><div class=3D"ydp6cc53ba1yahoo-st= yle-wrap" style=3D"font-family: "times new roman", "new york= ", times, serif;font-size: 16px;"><br class></div><div class=3D"ydp6cc= 53ba1yahoo-style-wrap" style=3D"font-family: "times new roman", &= quot;new york", times, serif;font-size: 16px;"></div><div class=3D"ydp= c7805dc8yahoo_quoted" id=3D"ydpc7805dc8yahoo_quoted_1324582705"><div style= =3D"font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;f= ont-size: 13px;color: rgb(38, 40, 42);" class><div class>On =E2=80=8EFriday= =E2=80=8E, =E2=80=8EJune=E2=80=8E =E2=80=8E14=E2=80=8E, =E2=80=8E2019=E2=80= =8E =E2=80=8E01=E2=80=8E:=E2=80=8E35=E2=80=8E:=E2=80=8E18=E2=80=8E =E2=80= =8EPM=E2=80=8E =E2=80=8EPDT, Tom Collins <a href=3D"mailto:tom-lnEA/wrDJtNWk0Htik3J/[email protected]= " class>tom-lnEA/wrDJtNWk0Htik3J/[email protected]</a> [rabbit-semi] <<a href=3D"mailto:rabbit-sem= [email protected]" class>[email protected]</a>> wrote:</div><d= iv class><br class></div><div class><br class></div><div class><div id=3D"y= dpc7805dc8yiv1007472175" class><div class><span class> </span><div id= =3D"ydpc7805dc8yiv1007472175ygrp-mlmsg" class><div id=3D"ydpc7805dc8yiv1007= 472175ygrp-msg" class><div id=3D"ydpc7805dc8yiv1007472175ygrp-text" class><= p style=3D"margin: 0px 0px 1em;" class>I recently wrapped up an investigati= on of strange behavior in a customer=E2=80=99s program on a Rabbit 3000 pro= duct. It took some time to track it down to using the OS_TASK_OP= T_STK_CLR option with OSTaskCreateExt(). Both Dynamic C 9 and 10 were= erasing the wrong memory area... </p><div class=3D"ydpc7805dc8yiv100= 7472175class"><br class=3D"ydpc7805dc8yiv1007472175class" clear=3D"none"></= div><div class=3D"ydpc7805dc8yiv1007472175class">In the case of Dynamic C 9= , it was inefficiently using 16-bit writes and ultimately erasing one byte = beyond the end of the stack allocated for the task. In this customer= =E2=80=99s situation, a stack ending at 0x6FFFF would end up erasing the by= te at 0x60000 due to usage of the LDP opcode.</div><div class=3D"ydpc7805dc= 8yiv1007472175class"><br class=3D"ydpc7805dc8yiv1007472175class" clear=3D"n= one"></div><div class=3D"ydpc7805dc8yiv1007472175class">In Dynamic C 10, it= calculated the incorrect starting address for the stack, and would erase o= ne byte before the stack and leave the last byte untouched.</div><div class= =3D"ydpc7805dc8yiv1007472175class"><br class=3D"ydpc7805dc8yiv1007472175cla= ss" clear=3D"none"></div><div class=3D"ydpc7805dc8yiv1007472175class">Due t= o licensing issues, Digi International wasn=E2=80=99t able to include the u= C/OS-II source code in the GitHub repository when they released Dynamic C l= ibraries and samples as Open Source. This change will be a part of th= e Dynamic C 10.72E installer whenever we release it. I intend to incl= ude it as a patch on GitHub for both Dynamic C 9 and 10.</div><div class=3D= "ydpc7805dc8yiv1007472175class"><br class=3D"ydpc7805dc8yiv1007472175class"= clear=3D"none"></div><div class=3D"ydpc7805dc8yiv1007472175class">Here=E2= =80=99s the patch for Dynamic C 9:</div><div class=3D"ydpc7805dc8yiv1007472= 175class"><div class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7= 805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7= 805dc8yiv1007472175class" style=3D"font-style: normal;">--- a/Lib/UCOS2/OS_= TASK.C</span></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><fon= t class=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><spa= n class=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;">= 3;++ b/Lib/UCOS2/OS_TASK.C</span></font></div><div class=3D"ydpc7805dc8yiv1= 007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" face=3D"Conso= las" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" style=3D"font= -style: normal;">@@ -439,8 +439,6 @@</span></font></div><div class=3D"y= dpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class"= face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class"= style=3D"font-style: normal;"> auto INT8U = err;</span></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font = class=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span = class=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;"> = ; auto INT16U i;</span></font></div><div class=3D"ydpc7= 805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" fac= e=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" sty= le=3D"font-style: normal;"> auto INT16U pbos;</sp= an></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font class=3D= "ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span class=3D= "ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;">- &nbs= p;auto INT8U upper_nibble;</span></font></div><div class=3D"yd= pc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" = face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" = style=3D"font-style: normal;">- auto INT16U lower_16;</= span></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font class= =3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span class= =3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;"> &nb= sp; auto INT16U stk_size;</span></font></div><div class=3D"ydp= c7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" f= ace=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" s= tyle=3D"font-style: normal;"> auto INT32U PhysAdd= r;</span></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font cl= ass=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span cl= ass=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;"><br cla= ss=3D"ydpc7805dc8yiv1007472175class" clear=3D"none"></span></font></div><di= v class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007= 472175class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007= 472175class" style=3D"font-style: normal;">@@ -460,25 +458,9 @@</span><= /font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydp= c7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span class=3D"ydp= c7805dc8yiv1007472175class" style=3D"font-style: normal;"> &nb= sp; if (opt & OS_TASK_OPT_STK_CHK) { = // See if stack checking has been enabled</span></font></div><= div class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv10= 07472175class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv10= 07472175class" style=3D"font-style: normal;"> &n= bsp; if (opt & OS_TASK_OPT_STK_CLR) { = // See if stack needs to be cleared</span></font></div><div class=3D"ydpc78= 05dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" face= =3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" styl= e=3D"font-style: normal;"> =  = ; // Yes, fill the s= tack with zeros</span></font></div><div class=3D"ydpc7805dc8yiv1007472175cl= ass"><font class=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size= =3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: n= ormal;">- lower_16 = =3D (INT16U)PhysAddr;</span></font></div><div class=3D"ydpc7805dc8yiv100747= 2175class"><font class=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" = size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" style=3D"font-styl= e: normal;">- upper_= nibble =3D (INT8U)(PhysAddr >> 16);</span></font></div><div class=3D"= ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class= " face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class= " style=3D"font-style: normal;">- = for (i =3D stk_size; i > 0; i--) {</span></font></div><div= class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv10074= 72175class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv10074= 72175class" style=3D"font-style: normal;">- &nb= sp; #asm</span></font></div><div class=3D= "ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175clas= s" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175clas= s" style=3D"font-style: normal;">- <span class=3D"ydpc7805dc8yiv10074= 72175Apple-tab-span" style=3D"white-space: pre-wrap;"> </span><span c= lass=3D"Apple-converted-space"> </span>ld<span class=3D"ydpc7805dc8yiv= 1007472175Apple-tab-span" style=3D"white-space: pre-wrap;"> </span>hl,@sp&#= 43;upper_nibble</span></font></div><div class=3D"ydpc7805dc8yiv1007472175cl= ass"><font class=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size= =3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: n= ormal;">-<span class=3D"ydpc7805dc8yiv1007472175Apple-tab-span" style=3D"wh= ite-space: pre-wrap;"> </span><span class=3D"Apple-converted-space">&= nbsp;</span>add<span class=3D"ydpc7805dc8yiv1007472175Apple-tab-span" style= =3D"white-space: pre-wrap;"> </span>hl,sp</span></font></div><div class=3D"= ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class= " face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class= " style=3D"font-style: normal;">-<span class=3D"ydpc7805dc8yiv1007472175App= le-tab-span" style=3D"white-space: pre-wrap;"> </span><span class=3D"Apple-= converted-space"> </span> &nb= sp; ld a,(hl)<span class=3D"ydpc7805dc8yiv1007472175Ap= ple-tab-span" style=3D"white-space: pre-wrap;"> </span><span class=3D"Apple= -converted-space"> </span> ;a gets high nib= ble</span></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font c= lass=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span c= lass=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;">-<span= class=3D"ydpc7805dc8yiv1007472175Apple-tab-span" style=3D"white-space: pre= -wrap;"> </span><span class=3D"Apple-converted-space"> </span>ld= <span class=3D"ydpc7805dc8yiv1007472175Apple-tab-span" style=3D"white-space= : pre-wrap;"> </span>hl,@sp+lower_16</span></font></div><div class=3D"y= dpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class"= face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class"= style=3D"font-style: normal;">-<span class=3D"ydpc7805dc8yiv1007472175Appl= e-tab-span" style=3D"white-space: pre-wrap;"> </span><span class=3D"A= pple-converted-space"> </span>add<span class=3D"ydpc7805dc8yiv10074721= 75Apple-tab-span" style=3D"white-space: pre-wrap;"> </span>hl,sp</span></fo= nt></div><div class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc78= 05dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc78= 05dc8yiv1007472175class" style=3D"font-style: normal;">- &nbs= p; ld hl,(hl)= <span class=3D"ydpc7805dc8yiv1007472175Apple-tab-span" style=3D"white-space= : pre-wrap;"> </span><span class=3D"Apple-converted-space"> </span>&nb= sp; ;hl has lower 16 bits</span></font></div><div clas= s=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175= class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175= class" style=3D"font-style: normal;">- &= nbsp; push ix</span></font></div><div cla= ss=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv100747217= 5class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv100747217= 5class" style=3D"font-style: normal;">- = ld ix,hl &nbs= p; ;a:ix 20-bit phys addr for stack</span></font></div= ><div class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv= 1007472175class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv= 1007472175class" style=3D"font-style: normal;">-  = ; bool hl</span></font></di= v><div class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yi= v1007472175class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yi= v1007472175class" style=3D"font-style: normal;">- &nbs= p; ld l,h &nb= sp; ;zero hl</span></font></div><div cla= ss=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv100747217= 5class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv100747217= 5class" style=3D"font-style: normal;">- = ldp (ix),hl &n= bsp; ;write zero into stack</span></font></div><div class=3D"= ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class= " face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class= " style=3D"font-style: normal;">- = pop ix</span></font></div><div cla= ss=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv100747217= 5class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv100747217= 5class" style=3D"font-style: normal;">- = #endasm</span></font></div><div class=3D"= ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class= " face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class= " style=3D"font-style: normal;">- = lower_16--;</span></font></div><div class=3D"yd= pc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" = face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" = style=3D"font-style: normal;">- &= nbsp; }</span></font></div><div class=3D"ydpc7805dc8yiv1007472175clas= s"><font class=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"= 2"><span class=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: norma= l;">+ // PhysAddr is= the last address of the stack (e.g., ...FF), so it's</span></font></div><d= iv class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv100= 7472175class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv100= 7472175class" style=3D"font-style: normal;">+ &= nbsp; // necessary to add 1 to get to the starting addr= ess of the stack.</span></font></div><div class=3D"ydpc7805dc8yiv1007472175= class"><font class=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size= =3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: n= ormal;">+ xmemset(Ph= ysAddr - stk_size + 1, 0, stk_size);</span></font></div><div class=3D"ydpc7= 805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" fac= e=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" sty= le=3D"font-style: normal;"> = }</span></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font cla= ss=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span cla= ss=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;"> &= nbsp; }</span></font></div><div class=3D"ydpc7805dc8yiv= 1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" face=3D"Cons= olas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" style=3D"fon= t-style: normal;"><br class=3D"ydpc7805dc8yiv1007472175class" clear=3D"none= "></span></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><br clas= s=3D"ydpc7805dc8yiv1007472175class" clear=3D"none"></div><div class=3D"ydpc= 7805dc8yiv1007472175class"><span class=3D"ydpc7805dc8yiv1007472175class" st= yle=3D"font-style: normal;">And for Dynamic C 10:</span></div><div class=3D= "ydpc7805dc8yiv1007472175class"><div class=3D"ydpc7805dc8yiv1007472175class= "><font class=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2= "><span class=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: normal= ;">--- a/Lib/Rabbit4000/UCOS2/OS_TASK.C</span></font></div><div class=3D"yd= pc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" = face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" = style=3D"font-style: normal;">+++ b/Lib/Rabbit4000/UCOS2/OS_TASK.C</spa= n></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"= ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span class=3D"= ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;">@@ -479,7 += ;479,9 @@</span></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><= font class=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><= span class=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;">= if (opt & OS_TASK_OPT_STK_CHK) { &nbs= p; // See if stack checking has been enabled</sp= an></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font class=3D= "ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span class=3D= "ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;"> = if (opt & OS_TASK_OPT_STK_CLR) { &nb= sp; // See if stack needs to be cleared</span></font></div><di= v class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007= 472175class" face=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007= 472175class" style=3D"font-style: normal;"> &nbs= p; &n= bsp; /= / Yes, fill the stack with zeros</span></font></div><div class=3D"ydpc7805d= c8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" face=3D= "Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" style= =3D"font-style: normal;">- = _f_memset((void __far *)(PhysAddr - stk_size), 0, stk_size);</span><= /font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font class=3D"ydp= c7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span class=3D"ydp= c7805dc8yiv1007472175class" style=3D"font-style: normal;">+ &= nbsp; // PhysAddr is the last address of = the stack (e.g., ...FF), so it's</span></font></div><div class=3D"ydpc7805d= c8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" face=3D= "Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" style= =3D"font-style: normal;">+ = // necessary to add 1 to get to the starting address of the stack.</= span></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font class= =3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span class= =3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;">+ &= nbsp; _f_memset((void __far *)(Phy= sAddr - stk_size + 1), 0, stk_size);</span></font></div><div class=3D"ydpc7= 805dc8yiv1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" fac= e=3D"Consolas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" sty= le=3D"font-style: normal;"> = }</span></font></div><div class=3D"ydpc7805dc8yiv1007472175class"><font cla= ss=3D"ydpc7805dc8yiv1007472175class" face=3D"Consolas" size=3D"2"><span cla= ss=3D"ydpc7805dc8yiv1007472175class" style=3D"font-style: normal;"> &= nbsp; }</span></font></div><div class=3D"ydpc7805dc8yiv= 1007472175class"><font class=3D"ydpc7805dc8yiv1007472175class" face=3D"Cons= olas" size=3D"2"><span class=3D"ydpc7805dc8yiv1007472175class" style=3D"fon= t-style: normal;"><br class=3D"ydpc7805dc8yiv1007472175class" clear=3D"none= "></span></font></div></div><div class=3D"ydpc7805dc8yiv1007472175class"><b= r class=3D"ydpc7805dc8yiv1007472175class" clear=3D"none"></div><div class= =3D"ydpc7805dc8yiv1007472175class">Please let me know if you have any quest= ions about the original bug, or the patches.</div><div class=3D"ydpc7805dc8= yiv1007472175class"><br class=3D"ydpc7805dc8yiv1007472175class" clear=3D"no= ne"><div class=3D"ydpc7805dc8yiv1007472175class"><span class=3D"ydpc7805dc8= yiv1007472175Apple-style-span" style=3D"border-collapse: separate;"></span>= <div class=3D"ydpc7805dc8yiv1007472175class">-Tom</div><br class=3D"ydpc780= 5dc8yiv1007472175Apple-interchange-newline" clear=3D"none"></div><br class= =3D"ydpc7805dc8yiv1007472175class" clear=3D"none"></div></div></div><div st= yle=3D"color: rgb(255, 255, 255);min-height: 0px;" class></div></div></div>= </div></div></div></div></div><div style=3D"margin: 0px 0px 1em;" class><br= class=3D"webkit-block-placeholder"></div></div><div style=3D"color: rgb(25= 5, 255, 255);height: 0px;" class></div></div></div></div></blockquote></div= ><br class></p> </div> =20=20=20=20=20 <!--~-|**|PrettyHtmlStart|**|-~--> <div style=3D"color: #fff; height: 0;">__._,_.___</div> =20=20=20=20=20=20=20=20=20=20 =20=20 =20 =20=20=20=20 <div style=3D"clear:both"> </div> <div id=3D"fromDMARC" style=3D"margin-top: 10px;"> <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; background= -color:#E3E3E3;"> Posted by: Tom Collins <tom-lnEA/wrDJtNWk0Htik3J/[email protected]> <hr style=3D= "height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;"> </div> <div style=3D"clear:both"> </div> <table cellspacing=3D4px style=3D"margin-top: 10px; margin-bottom: 10px= ; color: #2D50FD;"> <tbody> <tr> <td style=3D"font-size: 12px; font-family: arial; font-weight: bo= ld; padding: 7px 5px 5px;" > <a style=3D"text-decoration: none; color: #2D50FD= " href=3D"https://groups.yahoo.com/neo/groups/rabbit-semi/conversations/mes= sages/42533;_ylc=3DX3oDMTJxaHBkc2w5BF9TAzk3MzU5NzE0BGdycElkAzIzMDczMTYEZ3Jw= c3BJZAMxNzA2NTU0MjA1BG1zZ0lkAzQyNTMzBHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTU2MDg= wNjQzMA--?act=3Dreply&messageNum=3D42533">Reply via web post</a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;" > <a href=3D"mailto:tom-lnEA/wrDJtNWk0Htik3J/[email protected]?subject=3DRe%3A%20%5Brabbit-= semi%5D%20Bug%20when%20using%20OS_TASK_OPT_STK_CLR%20with%20OSTaskCreateExt= %28%29" style=3D"text-decoration: none; color: #2D50FD;"> Reply to sender </a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;"> <a href=3D"mailto:[email protected]?subject=3DRe%3A%2= 0%5Brabbit-semi%5D%20Bug%20when%20using%20OS_TASK_OPT_STK_CLR%20with%20OSTa= skCreateExt%28%29" style=3D"text-decoration: none; color: #2D50FD"> Reply to group </a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;" > <a href=3D"https://groups.yahoo.com/neo/groups/rabbit-semi/conv= ersations/newtopic;_ylc=3DX3oDMTJlam9sZDduBF9TAzk3MzU5NzE0BGdycElkAzIzMDczM= TYEZ3Jwc3BJZAMxNzA2NTU0MjA1BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTU2MDgwNjQzMA--= " style=3D"text-decoration: none; color: #2D50FD">Start a New Topic</a> </td> <td>•</td> <td style=3D"font-size: 12px; font-family: arial; padding: 7px 5p= x 5px;color: #2D50FD;" > <a href=3D"https://groups.yahoo.com/neo/groups/= rabbit-semi/conversations/topics/42531;_ylc=3DX3oDMTM2ZHJoODNqBF9TAzk3MzU5N= zE0BGdycElkAzIzMDczMTYEZ3Jwc3BJZAMxNzA2NTU0MjA1BG1zZ0lkAzQyNTMzBHNlYwNmdHIE= c2xrA3Z0cGMEc3RpbWUDMTU2MDgwNjQzMAR0cGNJZAM0MjUzMQ--" style=3D"text-decorat= ion: none; color: #2D50FD;">Messages in this topic</a> (3) </td> </tr> </tbody> </table> =20=20=20=20=20=20=20=20 <!------- Start Nav Bar ------> =20 <!-- |**|begin egp html banner|**| --> <div id=3D"ygrp-vital" style=3D"background-color: #f2f2f2; font-family: Ver= dana; font-size: 10px; margin-bottom: 10px; padding: 10px;"> <span id=3D"vithd" style=3D"font-weight: bold; color: #333; text-transf= orm: uppercase; "><a href=3D"https://groups.yahoo.com/neo/groups/rabbit-sem= i/info;_ylc=3DX3oDMTJldTFndWYyBF9TAzk3MzU5NzE0BGdycElkAzIzMDczMTYEZ3Jwc3BJZ= AMxNzA2NTU0MjA1BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTU2MDgwNjQzMA--" style=3D"t= ext-decoration: none;">Visit Your Group</a></span> <ul style=3D"list-style-type: none; margin: 0; padding: 0; display: in= line;"> </ul> </div> <div id=3D"ft" style=3D"font-family: Arial; font-size: 11px; margin-top: 5p= x; padding: 0 2px 0 0; clear: both;"> <a href=3D"https://groups.yahoo.com/neo;_ylc=3DX3oDMTJkaHNxNWhqBF9TAzk3ND= c2NTkwBGdycElkAzIzMDczMTYEZ3Jwc3BJZAMxNzA2NTU0MjA1BHNlYwNmdHIEc2xrA2dmcARzd= GltZQMxNTYwODA2NDMw" style=3D"float: left;"><img src=3D"http://l.yimg.com/r= u/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height=3D"15"= width=3D"137" alt=3D"Yahoo! Groups" style=3D"border: 0;"/></a> <div style=3D"color: #747575; float: right;"> • <a href=3D"https://i= nfo.yahoo.com/privacy/us/yahoo/groups/details.html" style=3D"text-decoratio= n: none;">Privacy</a> • <a href=3D"mailto:rabbit-semi-unsubscribe@yaho= ogroups.com?subject=3DUnsubscribe" style=3D"text-decoration: none;">Unsubsc= ribe</a> • <a href=3D"https://info.yahoo.com/legal/us/yahoo/utos/terms= /" style=3D"text-decoration: none;">Terms of Use</a> </div> </div> <br> <!-- |**|end egp html banner|**| --> </div> <!-- ygrp-msg --> =20 <!-- Sponsor --> <!-- |**|begin egp html banner|**| --> <div id=3D"ygrp-sponsor" style=3D"width:160px; float:right; clear:none; m= argin:0 0 25px 0; background: #fff;"> <!-- Start Recommendations --> <div id=3D"ygrp-reco"> </div> <!-- End Recommendations --> =20=20=20=20=20=20=20=20=20=20 <!-- |**|begin egp html banner|**| --> <div id=3D"ygrp-lc"> <div id=3D"hd">SPONSORED LINKS</div> <div id=3D"lc"> <div class=3D"ad" style=3D"color:#628C2A; font-family:Arial; font-w= eight:bold;"> <script type=3D'text/javascript'>document.write('<a h= ref=3D"https://us.y.atwola.com/?adlink|5113.1|221794|0|16|AdId=3D-3;BnId=3D= 0;itime=3D806431613;kvmn=3Dy100000;kvssp=3Dbrxd;kvpgcolo=3Dbf1;kvadtc%5Fdvm= ktname=3Dunknown;kvadtc%5Fdvosplt=3Dunknown;kvadtc%5Fdvbrand=3Dunknown;kvad= tc%5Fdvtype=3Dunknown;kvadtc%5Fdvmodel=3Dunknown;kvrepo%5Fdvosplt=3Dunknown= ;kvadtc%5Fdvosversion=3DUNKNOWN;kvadtc%5Fcrbrand=3Dwifi%5F;kvadtc%5Fcrmcc= =3DUNKNOWN;kvadtc%5Fcrmnc=3DUNKNOWN;kvadtc%5Fcontype=3Dwifi;gdpr=3D0;adclnt= id=3D1004;spaceid=3D1706554205;" target=3D_top><img src=3D"https://aka-cdn.= adtechus.com/images/ATCollapse.gif" border=3D0 alt=3D"AOL Ad" width=3D"1" h= eight=3D"1" ></a>'); =20=20 </script> <!--Pointguard Diagnostic Start {"FAC3.0":{ "FAC IP" : "98.139.15.110", "AdPosition Name" : "LC1", "sapyECPM" : "0", "gemniECPM" : "0", "oneMobileECPM" : "0", "gd2NetCpm" : "0", "issapyEmpty" : "true", "SapyAdSize" : "", "SapyCustomSection" : "", "SapyUrl" : "", " SapyFedStatus" : "federation is not configured for ad slot", " FedStatus" : "federation is not configured for ad slot" }--> <img alt=3D"" width=3D1 height=3D1 src=3D"htt= p://us.adserver.yahoo.com/l?M=3D#26/D=3Dyahoo/S=3D:LC1/A=3D1234567/rand=3D3= 38770385"> </div> <div class=3D"ad" style=3D"color:#628C2A; font-family:Arial; font-w= eight:bold;"> <script type=3D'text/javascript'>document.write('<a h= ref=3D"https://us.y.atwola.com/?adlink|5113.1|221794|0|16|AdId=3D-3;BnId=3D= 0;itime=3D806431616;kvmn=3Dy100000;kvssp=3Dbrxd;kvpgcolo=3Dbf1;kvadtc%5Fdvm= ktname=3Dunknown;kvadtc%5Fdvosplt=3Dunknown;kvadtc%5Fdvbrand=3Dunknown;kvad= tc%5Fdvtype=3Dunknown;kvadtc%5Fdvmodel=3Dunknown;kvrepo%5Fdvosplt=3Dunknown= ;kvadtc%5Fdvosversion=3DUNKNOWN;kvadtc%5Fcrbrand=3Dwifi%5F;kvadtc%5Fcrmcc= =3DUNKNOWN;kvadtc%5Fcrmnc=3DUNKNOWN;kvadtc%5Fcontype=3Dwifi;gdpr=3D0;adclnt= id=3D1004;spaceid=3D1706554205;" target=3D_top><img src=3D"https://aka-cdn.= adtechus.com/images/ATCollapse.gif" border=3D0 alt=3D"AOL Ad" width=3D"1" h= eight=3D"1" ></a>'); =20=20 </script> <!--Pointguard Diagnostic Start {"FAC3.0":{ "FAC IP" : "98.139.15.110", "AdPosition Name" : "LC2", "sapyECPM" : "0", "gemniECPM" : "0", "oneMobileECPM" : "0", "gd2NetCpm" : "0", "issapyEmpty" : "true", "SapyAdSize" : "", "SapyCustomSection" : "", "SapyUrl" : "", " SapyFedStatus" : "federation is not configured for ad slot", " FedStatus" : "federation is not configured for ad slot" }--> <img alt=3D"" width=3D1 height=3D1 src=3D"htt= p://us.adserver.yahoo.com/l?M=3D#26/D=3Dyahoo/S=3D:LC2/A=3D1234567/rand=3D3= 73853733"> </div> <div class=3D"ad" style=3D"color:#628C2A; font-family:Arial; font-w= eight:bold;"> <script type=3D'text/javascript'>document.write('<a h= ref=3D"https://us.y.atwola.com/?adlink|5113.1|221794|0|16|AdId=3D-3;BnId=3D= 0;itime=3D806431624;kvmn=3Dy100000;kvssp=3Dbrxd;kvpgcolo=3Dbf1;kvadtc%5Fdvm= ktname=3Dunknown;kvadtc%5Fdvosplt=3Dunknown;kvadtc%5Fdvbrand=3Dunknown;kvad= tc%5Fdvtype=3Dunknown;kvadtc%5Fdvmodel=3Dunknown;kvrepo%5Fdvosplt=3Dunknown= ;kvadtc%5Fdvosversion=3DUNKNOWN;kvadtc%5Fcrbrand=3Dwifi%5F;kvadtc%5Fcrmcc= =3DUNKNOWN;kvadtc%5Fcrmnc=3DUNKNOWN;kvadtc%5Fcontype=3Dwifi;gdpr=3D0;adclnt= id=3D1004;spaceid=3D1706554205;" target=3D_top><img src=3D"https://aka-cdn.= adtechus.com/images/ATCollapse.gif" border=3D0 alt=3D"AOL Ad" width=3D"1" h= eight=3D"1" ></a>'); =20=20 </script> <!--Pointguard Diagnostic Start {"FAC3.0":{ "FAC IP" : "98.139.15.110", "AdPosition Name" : "LC3", "sapyECPM" : "0", "gemniECPM" : "0", "oneMobileECPM" : "0", "gd2NetCpm" : "0", "issapyEmpty" : "true", "SapyAdSize" : "", "SapyCustomSection" : "", "SapyUrl" : "", " SapyFedStatus" : "federation is not configured for ad slot", " FedStatus" : "federation is not configured for ad slot" }--> <img alt=3D"" width=3D1 height=3D1 src=3D"htt= p://us.adserver.yahoo.com/l?M=3D#26/D=3Dyahoo/S=3D:LC3/A=3D1234567/rand=3D2= 11711985"> </div> </div> </div> =20=20=20=20 <!-- |**|end egp html banner|**| --> =20=20 </div> <!-- |**|end egp html banner|**| --> <div style=3D"clear:both; color: #FFF; font-size:1px;">.</div> </div> <img src=3D"http://geo.yahoo.com/serv?s=3D97359714/grpId=3D2307316/grpspI= d=3D1706554205/msgId=3D42533/stime=3D1560806430/nc1=3D1234567/nc2=3D2/nc3= =3D3" width=3D"1" height=3D"1"> <br> <img src=3D"http://y.analytics.yahoo.com/fpc.pl?ywarid=3D515FB27823A7407E&a= =3D10001310322279&js=3Dno&resp=3Dimg" width=3D"1" height=3D"1">=20 <div style=3D"color: #fff; height: 0;">__,_._,___</div> <!--~-|**|PrettyHtmlEnd|**|-~--> </body> <!--~-|**|PrettyHtmlStart|**|-~--> <head> <style type=3D"text/css"> <!-- #ygrp-mkp { border: 1px solid #d8d8d8; font-family: Arial; margin: 10px 0; padding: 0 10px; } #ygrp-mkp hr { border: 1px solid #d8d8d8; } #ygrp-mkp #hd { color: #628c2a; font-size: 85%; font-weight: 700; line-height: 122%; margin: 10px 0; } #ygrp-mkp #ads { margin-bottom: 10px; } #ygrp-mkp .ad { padding: 0 0; } #ygrp-mkp .ad p { margin: 0; } #ygrp-mkp .ad a { color: #0000ff; text-decoration: none; } #ygrp-sponsor #ygrp-lc { font-family: Arial; } #ygrp-sponsor #ygrp-lc #hd { margin: 10px 0px; font-weight: 700; font-size: 78%; line-height: 122%; } #ygrp-sponsor #ygrp-lc .ad { margin-bottom: 10px; padding: 0 0; } #actions { font-family: Verdana; font-size: 11px; padding: 10px 0; } #activity { background-color: #e0ecee; float: left; font-family: Verdana; font-size: 10px; padding: 10px; } #activity span { font-weight: 700; } #activity span:first-child { text-transform: uppercase; } #activity span a { color: #5085b6; text-decoration: none; } #activity span span { color: #ff7900; } #activity span .underline { text-decoration: underline; } .attach { clear: both; display: table; font-family: Arial; font-size: 12px; padding: 10px 0; width: 400px; } .attach div a { text-decoration: none; } .attach img { border: none; padding-right: 5px; } .attach label { display: block; margin-bottom: 5px; } .attach label a { text-decoration: none; } =20=20 blockquote { margin: 0 0 0 4px; } .bold { font-family: Arial; font-size: 13px; font-weight: 700; } .bold a { text-decoration: none; } dd.last p a { font-family: Verdana; font-weight: 700; } dd.last p span { margin-right: 10px; font-family: Verdana; font-weight: 700; } dd.last p span.yshortcuts { margin-right: 0; } div.attach-table div div a { text-decoration: none; } div.attach-table { width: 400px; } div.file-title a, div.file-title a:active, div.file-title a:hover, div.fi= le-title a:visited { text-decoration: none; } div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div= ..photo-title a:visited { text-decoration: none; } div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts { font-family: Verdana; font-size: 10px; font-weight: normal; } .green { color: #628c2a; } .MsoNormal { margin: 0 0 0 0; } o { font-size: 0; } #photos div { float: left; width: 72px; } #photos div div { border: 1px solid #666666; height: 62px; overflow: hidden; width: 62px; } #photos div label { color: #666666; font-size: 10px; overflow: hidden; text-align: center; white-space: nowrap; width: 64px; } #reco-category { font-size: 77%; } #reco-desc { font-size: 77%; } .replbq { margin: 4px; } #ygrp-actbar div a:first-child { /* border-right: 0px solid #000;*/ margin-right: 2px; padding-right: 5px; } #ygrp-mlmsg { font-size: 13px; font-family: Arial, helvetica,clean, sans-serif; *font-size: small; *font: x-small; } #ygrp-mlmsg table { font-size: inherit; font: 100%; } #ygrp-mlmsg select, input, textarea { font: 99% Arial, Helvetica, clean, sans-serif; } #ygrp-mlmsg pre, code { font:115% monospace; *font-size:100%; } #ygrp-mlmsg * { line-height: 1.22em; } #ygrp-mlmsg #logo { padding-bottom: 10px; } #ygrp-msg p a { font-family: Verdana; } #ygrp-msg p#attach-count span { color: #1E66AE; font-weight: 700; } #ygrp-reco #reco-head { color: #ff7900; font-weight: 700; } #ygrp-reco { margin-bottom: 20px; padding: 0px; } #ygrp-sponsor #ov li a { font-size: 130%; text-decoration: none; } #ygrp-sponsor #ov li { font-size: 77%; list-style-type: square; padding: 6px 0; }=20 #ygrp-sponsor #ov ul { margin: 0; padding: 0 0 0 8px; } #ygrp-text { font-family: Georgia; } #ygrp-text p { margin: 0 0 1em 0; } #ygrp-text tt { font-size: 120%; } #ygrp-vital ul li:last-child { border-right: none !important;=20 }=20 --> </style> </head> <!--~-|**|PrettyHtmlEnd|**|-~--> </html> <!-- end group email --> --Apple-Mail=_E542A25F-00DA-40CA-B40C-5C9C12D20267--