analyzing PMD files with wd

Hi,

99 out of 100 times when I get a SIGSEGV it’s at some address that’s
useless to me, because it’s in some deep low level library routine, or
maybe in SLIB. When I startup wd with -TR=pmd to analyze the dump file,
I can’t “unwind stack” nor “show calls” to find out which high level
routine was the culprit.

For instance, today I had a SIGSEGV in a library routine called
__MemFree. What’s more is, this SIGSEGV occurs rearly and I can’t
reproduce it (yet). How can I find out the trace of calls leading to
this routine? How do you guys deal with these kinds of dumps?

a.r.g.a.,
t.i.a.,

rick

Although I don’t have any suggestion of analyzing dump file
such as your. I might offer a few tips:

A crash in MemFree typically indicates memory list corruption.

To detect this, I use set of memory replacement routine that some
checking to memory malloc/free.

I have attached the source, this is taken from I don’t remember where,
it was part of a big set of utility. Hence some reference to MS_DOS
in there. Never took the time to clean that up!



“Rick Lake” <rwlake@!DOIREPMAPSONanp.nl> wrote in message
news:8oejst$ea5$1@inn.qnx.com

Hi,

99 out of 100 times when I get a SIGSEGV it’s at some address that’s
useless to me, because it’s in some deep low level library routine, or
maybe in SLIB. When I startup wd with -TR=pmd to analyze the dump file,
I can’t “unwind stack” nor “show calls” to find out which high level
routine was the culprit.

For instance, today I had a SIGSEGV in a library routine called
__MemFree. What’s more is, this SIGSEGV occurs rearly and I can’t
reproduce it (yet). How can I find out the trace of calls leading to
this routine? How do you guys deal with these kinds of dumps?

a.r.g.a.,
t.i.a.,

rick

begin 666 mem.h
M+RH@RLK1&%T92!L87-T(&UO9&EF:65D.B P-2U=6PM,3DY-R J+PT*#0HO
M*@TBH@(%1H:7,@:7,@82!C;W!Y<FEG:‘1E9"!W;W)K(’=H:6-H(&ES(&9U
M;F-T:6]N86QL>2!I9&5N=&EC86P@=&@=V]R:PT
BH@(&]R:6=I;F%L;'D@
M<‘5B;&ES:&5D(&EN($UI8W)O($-O<FYU8V]P:6$@;6%G87II;F4@&ES<W5E
M(",U,BP@36%R8V@M07!R:6PL#0HJ
B @,3DY,“D@86YD(&ES(&9R965L>2!L
M:6-E;G-E9”!B>2!T:&4@875T:&]R+"!786QT97(@0G)I9VAT+"!F;W(@86YY
M(‘5S92X-“BHO#0H-“B\J7R!M96TN:” @($9R:2!-87D@,C8@,3DX.2 @($UO
M9&EF:65D(&)Y.B!786QT97(@0G)I9VAT(“HO#0HOB!#;W!Y<FEG:'0@,3DX
M-BTQ.3@X(&)Y($YO<G1H=V5S="!3;V9T=V%R92 @(" J+PT
+RH@06QL(%)I
M9VAT<R!297-E<G9E9” @(” @(" @(" @(" @(" @(" @B-“B\J(%=R:71T
M96X@8GD@5V%L=&5R($)R:6=H=” @(" @(" @(" @(" @("HO#0H-“B-I9FYD
M968@345-7T@-“B-D969I;F4@345-7T@@(” @(#$-”@T
(VEF9&5F(%]?8W!L
M=7-P;‘5S#0IE>‘1E<FX@(D,B(‘L-“B-E;F1I9@T*#0HC:69N9&5F(%1/3TQ+
M251?2 T*(VEN8VQU9&4@(” @(G1O;VQK:70N:"(-"B-E;F1I9@T*#0HO+R-D
M969I;F4@1$5"54=?345-“3$-”@T*+RH-"B J($UE;6]R>2!M86YA9V5M96YT
M(’)O=71I;F5S+@T*(“H-“B J($-O;7!I;&EN9SH-“B J#0H@B @(" C9&5F
M:6YE($1%0E5’(#$@=VAE;B!C;VUP:6QI;F<@=&@96YA8FQE(&5X=&5N9&5D
M(&1E8G5G9VEN9PT
(“H@(” @9F5A='5R97,N#0H@@T(“H@1F5A='5R97,@
M86QW87ES(&5N86)L960Z#0H@@T(“H@(” @;R!M96U?:6YI=”@I(&ES(&-A
M;&QE9”!A=”!S=&%R='5P+”!A;F0@;65M7W1E<FTH2!A= T(“H@(” @("!C
M;&]S92P@=VAI8V@@8VAE8VMS(‘1O(’-E92!T:&%T(‘1H92!N=6UB97(@;V8@
M86QL;V,G<R!I<PT*(“H@(” @("!T:&4@<V%M92!A<R!T:&4@;G5M8F5R(&]F
M(&9R964G<RX-“B J(” @(&@0F5H879I;W(@;VX@;W5T+6]F+6UE;6]R>2!C
M;VYD:71I;VYS(&-A;B!B92!C;VYT<F]L;&5D#0H@B @(" @('9I82!M96U?
M<V5T97AC97!T:6]N
"DN#0H@@T(“H@17AT96YD960@9&5B=6=G:6YG(&9E
M871U<F5S.@T*(“H-“B J(” @(&@16YA8FQE=60@8GD@(V1E9FEN92!$14)5
M1U]-14T@,2!W:&5N(&-O;7!I;&EN9RX-“B J(” @(&@0VAE8VL@=F%L=65S
M(&%R92!I;G-E<G1E9”!B969O<F4@86YD(&%F=&5R('1H92!A;&QO8R=E9”!D
M871A#0H@B @(" @('1O(&1E=&5C="!P;VEN=&5R('5N9&5R<G5N<R!A;F0@
M;W9E<G)U;G,N#0H@B @("!O($9R964G9"!P;VEN=&5R<R!A<F4@8VAE8VME
M9"!A9V%I;G-T(&%L;&]C)V5D(’!O:6YT97)S+@T
(“H@(” @;R!&<F5E)V0@
M<W1O<F%G92!I<R!C;&5A<F5D(‘1O(’-M;VME(&]U="!R969E<F5N8V5S('1O
M(&9R964G9"!D871A+@T
(“H@(” @;R!296%L;&]C)V0@<&]I;G1E<G,@87)E
M(&%L=V%Y<R!C:&%N9V5D+"!A;F0@=&AE(’!R979I;W5S(’-T;W)A9V4-“B J
M(” @(" @:7,@8VQE87)E9"P@=&@9&5T96-T(&5R<F]N96]U<R!D97!E;F1E
M;F-I97,@;VX@=&AE(’!R979I;W5S#0H@B @(" @(’!O:6YT97(N#0H@B @
M("!O(%1H92!R;W5T:6YE(&UE;5]C:&5C:W!T<B@I(&ES(’!R;W9I9&5D('1O
M(&-H96-K(&%N(&%L;&]C)V5D#0H@B @(" @(’!O:6YT97(N#0H@B-"@T
M+RHJ
BHJ
BHJ
BHJBHJBHJBHJB!‘3$]“04P@5D%224%“3$53(“HJBHJ
M
BHJBHJBHJBHJBHJBHJBHO#0H-“F5X=&5R;B!I;G0@;65M7VEN:71E
M9#L@(” @(” @(”\J(”$](# @:68@;65M(’!A8VMA9V4@:7,@:6YI=&EA;&EZ
M960N(" @(“HO#0H@(” @(" @(" @(" @(" @(" @(" @(" OB!497-T('1H
M:7,@:68@>6]U(&AA=F4@;W1H97(@<&%C:V%G97,@(" J+PT
(" @(" @(" @
M(" @(" @(" @(" @(" @+RH@=&AA="!D97!E;F0@;VX@;65M(&)E:6YG(&EN
M:71I86QI>F5D(" @B-"@P-"B\JBHJBHJBHJBHJBHJBHJBH@4%5"
M3$E#($953D-424].4R JBHJBHJBHJBHJBHJBHJBHJBHJ+PT*#0HO
MBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBH-“B J(%-E=”!B
M96AA=FEO<B!W:&5N(&UE;2!R=6YS(&]U="!O9B!M96UO<GDN#0H@B!);G!U
M=#H-“B J(” @(&9L86<@/2 @(" @($U%35]!0D]25$U31SH@(" @($%B;W)T
M(‘1H92!P<F]G<F%M(’=I=&@@=&AE(&UE<W-A9V4-“B J(” @(" @(" @(" @
M(" @(" @(" @("=&871A;"!E<G)O<CH@;W5T(&]F(&UE;6]R>2<@<V5N= T

M(“H@(” @(" @(" @(" @(" @(" @(" @=&@<W1D;W5T+B!4:&ES(&ES(‘1H
M92!D969A=6QT(&)E:&%V:6]R+@T*(“H@(” @(" @(" @345-7T%"3U)4.B @
M06)O<G0@=&AE(’!R;V=R86T@=VET:"!N;R!M97-S86=E+@T*(“H@(” @(" @
M(" @345-7U)%5$Y53$PZ(" @(" @4F5T=7)N($Y53$P@8F%C:R!T;R!C86QL
M97(N#0H@B @(" @(" @("!-14U?0T%,3$90.B!#86QL(&%P<&QI8V%T:6]N
M+7-P96-I9FEE9"!F=6YC=&EO;BX-“B J(” @(" @(" @(" @(" @(" @(" @
M(&9P(&UU<W0@8F4@<W5P<&QI960N#0H@B @("!F<" @(" @(" @(" @(" @
M("!/<'1I;VYA;"!F=6YC=&EO;B!P;VEN=&5R+B!3=7!P;&EE9"!I9@T
(“H@
M(” @(" @(" @(" @(" @(" @(" @
&9L86<@/3T@345-7T-!3$Q&4"DN(%1H
M:7,@9G5N8W1I;VX@<F5T=7)N<PT*(“H@(” @(" @(" @(" @(" @(" @(" @
M345-7UA86%A8+"!I;F1I8V%T:6YG(’=H870@;65M(’-H;W5L9"!D;R!N97AT
M+@T*(“H@(” @(" @(" @(" @(" @(" @(" @5&AE(&9U;F-T:6]N(&-O=6QD
M(&1O(‘1H:6YG<R!L:6ME(’-W87 -“B J(” @(" @(" @(" @(" @(" @(" @
M(&1A=&$@;W5T(‘1O(&1I<VL@=&@9G)E92!U<"!M;W)E(&UE;6]R>2X-“B J
M(” @(&9P(&-O=6QD(&%L<V@<F5T=7)N.@T*(“H@(” @(" @(" @345-7U)%
M5%)9.B @5’)Y(&%G86EN('1O(&%L;&]C871E('1H92!S<&%C92X@0F4-“B J
M(” @(" @(" @(" @(" @(" @(" @(&-A<F5F=6P@;F]T('1O(&=O(&EN=&@
M86X@:6YF:6YI=&4@;&]O<“X-“B J+PT*#0HC:68@9&5F:6YE9"A?7V-P;'5S
M<&QU<RD@)B8@7U]C<&QU<W!L=7,-“F5N=6T@345-7T4@>R!-14U?04)/4E1-
M4T<L($U%35]!0D]25"P@345-7U)%5$Y53$PL($U%35]#04Q,1E L($U%35]2
M151262!].PT*=F]I9”!M96U?<V5T97AC97!T:6]N(“AE;G5M($U%35]%+”!I
M;G0@"HI’9O:60I3L-“B-E;’-E#0HC9&5F:6YE($U%35]!0D]25$U31R @
M(” P#0HC9&5F:6YE($U%35]!0D]25" Q#0HC9&5F:6YE($U%35]2151.54Q,
M(" @(" R#0HC9&5F:6YE($U%35]#04Q,1E @(" @(" S#0HC9&5F:6YE($U%
M35]2151262 T#0IV;VED(&UE;5]S971E>&-E<'1I;VX@
&EN=“P@:6YT*“HI
M*'9O:60I3L-"B-E;F1I9@T#0H-@T*=F]I9”!M96U?:6YI=” H=F]I9” I
M.PT*#0HOBHJBHJBHJBHJBHJBHJBHJBHJBHJ#0H@B!497)M:6YA
M=&4@;65M;W)Y(&AA;F1L97(N(%5S969U;"!F;W(@8VAE8VMI;F<@9F]R(&5R
M<F]R<RX-"B J(%5S93H-“B J(” @('9O:60@;65M7W1E<FTH=F]I9"D[#0H@
M
B!/=71P=70Z#0H@B @("!M96U?:6YI=&5D(#T@, T("HO#0H-"G9O:60@
M;65M7W1E<FT@
‘9O:60I(#L-"@T*+RH@5&AE(&9O;&QO=VEN9R!S=‘5F9B!F
M;W)M<R!T:&4@:6UP;&5M96YT871I;VX@<F%T:&5R(‘1H86X@=&AE#0H@B!D
M969I;FET:6]N+"!S;R!I9VYO<F4@:70N#0H@B-"@T(VEF(&1E9FEN960H
M1$5"54=?345-2 @(" @(" OB!I9B!C<F5A=&EN9R!D96)U9R!V97)S:6]N
M(" J+PT
(V1E9FEN92!M96U?<W1R9’5P*’ I(" @;65M7W-T<F1U<%]D96)U
M9R@H<“DL7U]&24Q%7U\L7U],24Y%7U\I#0HC9&5F:6YE(&UE;5]M86QL;V,H
M=2D@(”!M96U?;6%L;&]C7V1E8G5G*“AU2Q?7T9)3$5?7RQ?7TQ)3D5?7RD-
M"B-D969I;F4@;65M7V-A;&QO8RAU
2 @(&UE;5]C86QL;V-?9&5B=6<H*'4I
M+%]?1DE,15]?+%]?3$E.15]?0T(V1E9FEN92!M96U?<F5A;&QO8RAP+'4I
M(” @(" @;65M7W)E86QL;V-?9&5B=6<H*’ I+“AU2Q?7T9)3$5?7RQ?7TQ)
M3D5?7RD-"B-D969I;F4@;65M7V9R964H<“D@(” @(&UE;5]F<F5E7V1E8G5G
M
"AP2Q?7T9)3$5?7RQ?7TQ)3D5?7RD-"@T8VAA<B J;65M7W-T<F1U<%]D
M96)U9R @&-O;G-T(&-H87(@BQC:&%R("HL:6YT3L-"G9O:60@FUE;5]C
M86QL;V-?9&5B=6<@("AU;G-I9VYE9"QC:&%R("HL:6YT
3L-"G9O:60@FUE
M;5]M86QL;V-?9&5B=6<@("AU;G-I9VYE9"QC:&%R("HL:6YT
3L-"G9O:60@
M
FUE;5]R96%L;&]C7V1E8G5G(“AV;VED(“HL=6YS:6=N960L8VAA<B J+&EN
M=“D[#0IV;VED(”!M96U?9G)E95]D96)U9R @(” H=F]I9” J+&-H87(@BQI
M;G0I.PT
=F]I9” @;65M7V9R965F<" @‘9O:60@BD[#0H-"G9O:60@;65M
M7W-E=&YE=V9I;&5L:6YE("AV;VED("HL8VAA<B J+&EN="D[#0H-"G9O:60@
M;65M7V-H96-K<‘1R("AV;VED("IP=’(I.PT
=F]I9"!M96U?8VAE8VLH=F]I
M9"D[#0H-"B-E;’-E#0H-"B\J
BHJBHJBHJBHJBHJBHJBHJBHJBHJ
M#0H@B!!;&QO8V%T92!S<&%C92!F;W(@<W1R:6YG+"!C;W!Y(’-T<FEN9R!I
M;G1O(&ET+"!A;F0-"B J(’)E='5R;B!P;VEN=&5R('1O('1H92!N97<@<W1R
M:6YG+@T
(“H@5&AI<R!R;W5T:6YE(&1O97-N)W0@<F5A;&QY(&)E;&]N9R!H
M97)E+”!B=70@:70@:7,@=7-E9"!S;R!O9G1E;@T*(“H@=&AA=”!)(&=A=F4@
M=7 @86YD(’!U="!I="!H97)E+@T*(“H@57-E.@T*(“H@(” @8VAA<B J;65M
M7W-T<F1U<“AC;VYS=”!C:&%R(“IS3L-"B J(%)E='5R;G,Z#0H@B @("!P
M;VEN=&5R(‘1O(&-O<&EE9"!S=’)I;F<@:68@<W5C8V5S<V9U;"X-“B J(” @
M(&5L<V4@<F5T=7)N<R!.54Q,("AI9B!-14U?4D543E5,3"D-"B J+PT
#0IC
M:&%R("IM96U?<W1R9’5P(“AC;VYS=”!C:&%R("HI.PT
#0HOBHJBHJBHJ
M
BHJBHJBHJBHJBHJBH-"B J($9U;F-T:6]N(’-O(’=E(&-A;B!H879E
M(&$@<&]I;G1E<B!T;R!F=6YC=&EO;B!M96U?9G)E92@I+@T
(“H@5&AI<R!I
M<R!N965D960@<VEN8V4@;65M7V9R964@:7,@<V]M971I;65S(&1E9FEN960@
M87,@82!M86-R;RP-“B J(&%N9”!T:&5N('1H92!P<F5P<F]C97-S;W(@<V-R
M97=S(‘5P+@T*("H@5&AE(’!O:6YT97(@=&@;65M7V9R964H2!I<R!U<V5D
M(&9R97%U96YT;'D@=VET:"!T:&4@;&ES="!P86-K86=E+@T
(“H@57-E.@T*
M(“H@(” @=F]I9”!M96U?9G)E969P*‘9O:60@G I.PT("HO#0H-"B\JBHJ
M
BHJBHJBHJBHJBHJBHJBHJBH-"B J($-H96-K(&9O<B!E<G)O<G,N
M(%1H:7,@<F]U=&EN92!D;V5S(&$@8V]N<VES=&5N8WD@8VAE8VL@;VX@=&AE
M#0H@B!S=&]R86=E(&%L;&]C871O<BP@;&]O:VEN9R!F;W(@8V]R<G5P=&5D
M(&1A=&$N($ET(’-H;W5L9"!B92!C86QL960-“B J(’=H96X@=&AE(&%P<&QI
M8V%T:6]N(&AA<R!#4%4@8WEC;&5S('1O(&)U<FXN#0H@B!5<V4Z#0H@B @
M("!V;VED(&UE;5]C:&5C:RAV;VED
3L-"B J+PT
#0IV;VED(&UE;5]C:&5C
M:R H=F]I9” I.PT
#0HO
BHJBHJBHJBHJBHJBHJBHJBHJBHJ#0H@
MB!#:&5C:R!P=’(@=&@<V5E(&EF(&ET(&ES(&EN('1H92!R86YG92!O9B!A
M;&QO8V%T960@9&%T82X-"B J($-A=7-E(&%S<V5R=&EO;B!F86EL=7)E(&EF
M(&ET(&ES;B=T+@T
(“HO#0H-”@T*+RHJBHJBHJBHJBHJBHJBHJBHJ
M
BHJ*@T*("H@06QL;V-A=&4@86YD(’)E=‘5R;B!A(’!O:6YT97(@=&@;G5M
M8GET97,@;V8@<W1O<F%G92X-“B J(%5S93H-“B J(” @('9O:60@FUE;5]M
M86QL;V,H=6YS:6=N960@;G5M8GET97,I.PT
(“H@(” @=F]I9” J;65M7V-A
M;&QO8RAU;G-I9VYE9”!N=6UB>71E<RD[(&%L;&]C871E9”!M96UO<GD@:7,@
M8VQE87)E9 T*(“H@26YP=70Z#0H@B @("!N=6UB>71E<R @("!.=6UB97(@
M;V8@8GET97,@=&@86QL;V-A=&4-"B J(%)E='5R;G,Z#0H@B @("!I9B H
M;G5M8GET97,@/B P
0T
(“H@(” @(” @(” @<&]I;G1E<B!T;R!A;&QO8V%T
M960@9&%T82P@3E5,3"!I9B!O=70@;V8@;65M;W)Y#0H@B @("!E;’-E#0H@
M
B @(" @(" @("!R971U<FX@3E5,3 T*("HO#0H-“G9O:60@FUE;5]M86QL
M;V,@
'5N<VEG;F5D3L-"G9O:60@FUE;5]C86QL;V,@'5N<VEG;F5D3L-
M”@T*+RHJBHJBHJBHJBHJBHJBHJBHJBHJBHJ#0H@B!296%L;&]C
M871E(&UE;6]R>2X-"B J(%5S93H-“B J(” @('9O:60@FUE;5]R96%L;&]C
M
’9O:60@G!T<BQU;G-I9VYE9"!N=6UB>71E<RD[#0H@B-"@T=F]I9" J
M;65M7W)E86QL;V,@
'9O:60@BQU;G-I9VYE9"D[#0H-"B\JBHJ
BHJ
BHJ
MBHJBHJBHJBHJBHJBHJ*@T*("H@1G)E92!M96UO<GD@86QL;V-A=&5D
M(&)Y(&UE;5]M86QL;V,H2P@;65M7V-A;&QO8R@I(&]R(&UE;5]R96%L;&]C
M
"DN#0H@B!5<V4Z#0H@B @("!V;VED(&UE;5]F<F5E’9O:60@G!T<BD[
M#0H@B-"@T=F]I9"!M96U?9G)E92 H=F]I9" J
3L-"@T
+RHJBHJBHJ
MBHJBHJBHJBHJBHJBHJ*@T*(“H@26YI=&EA;&EZ92!M96UO<GD@:&%N
M9&QE<BX-“B J(%5S93H-“B J(” @('9O:60@;65M7VEN:70H=F]I9"D[#0H@
MB!/=71P=70Z#0H@B @("!M96U?:6YI=&5D(#T@,0T(“HO#0H-“B-D969I
M;F4@;65M7V9R965F<” @(” @(&UE;5]F<F5E#0HC9&5F:6YE(&UE;5]C:&5C
M:W!T<BAP
0T*#0HC96YD:68@+RH@1$5"54<@B-"@T(VEF9&5F(%]?8W!L
K=7-P;'5S#0I]#0HC96YD:68-@T*(V5N9&EF(”\J($U%35]((“HO#0H-”@``
`
end

begin 666 toolkit.h
M+RH@RLK1&%T92!L87-T(&UO9&EF:65D.B P-2U=6PM,3DY-R J+PT*#0HO
M*@TBH@(%1H:7,@:7,@82!C;W!Y<FEG:‘1E9"!W;W)K(’=H:6-H(&ES(&9U
M;F-T:6]N86QL>2!I9&5N=&EC86P@=&@=V]R:PT
BH@(&]R:6=I;F%L;‘D@
M<‘5B;&ES:&5D(&EN($UI8W)O($-O<FYU8V]P:6$@;6%G87II;F4@&ES<W5E
M(",U,BP@36%R8V@M07!R:6PL#0HJ
B @,3DY,“D@86YD(&ES(&9R965L>2!L
M:6-E;G-E9”!B>2!T:&4@875T:&]R+"!786QT97(@0G)I9VAT+"!F;W(@86YY
M(‘5S92X-“BHO#0H-“B\J7R!T;V]L:VET+F@@(”!4=64@07!R(#$X(#$Y.#D@
M(”!-;V1I9FEE9"!B>3H@5V%L=&5R($)R:6=H=" J+PT*#0HC:69N9&5F(%1/
M3TQ+251?2 T*(V1E9FEN92!43T],2TE47T@-"@T*+RH@1&5F:6YE(’-T=69F
M(‘1H870G<R!D:69F97)E;G0@8F5T=V5E;B!M86-H:6YE<RX-"B J(%!23U1/
M5%E024Y’(" @(" @(" @(#$@:68@8V]M<&EL97(@<W5P<&]R=’,@<’)O=&]T
M>7!I;F<-“B J($A/4U1"651%4U=!4%!%1” @(" @(#$@:68@;VX@=&AE(&AO
M<W0@;6%C:&EN92!T:&4@8GET97,@87)E#0H@B @(" @(" @(" @(" @("!S
M=V%P<&5D("@Q(&9O<B V.# Y+" V.# P,“P@,”!F;W(@.# X. T
(“H@(” @
M(" @(" @(" @(" @86YD(%9!6"DN#0H@B-"@T(VEF(&1E9FEN960H35-$
M3U,I(‘Q(&1E9FEN960H7U]-4T1/4U]?0T(V1E9FEN92!04D]43U194$E.
M1R @(" @,0T*(V1E9FEN92!(3U-40EE415-705!0140@, T*#0HC9&5F:6YE
M($))5%-015)"651%(#@-“B-D969I;F4@4TE:14]&24Y4(” @<VEZ96]F*&EN
M="D-"B-D969I;F4@4TE:14]&3$].1R @<VEZ96]F*&QO;F<I#0H-"B-E;’-E
M#0HC:69D968@35]53DE8(" @(" OB!30T@54Y)6"!U<VEN9R!-:6-R;W-O
M9G0@0RX@B-“B-D969I;F4@4%)/5$]465!)3D<@(” @(#$-“B-D969I;F4@
M2$]35$)95$535T%04$5$(# -“B-D969I;F4@15A)5%]354-#15-3(” @(# -
M"B-D969I;F4@15A)5%]&04E,55)%(” @(#$-"@T
(V1E9FEN92!“25134$52
M0EE412 X#0HC9&5F:6YE(%-)6D5/1DE.5” @(’-I>F5O9BAI;G0I#0HC9&5F
M:6YE(%-)6D5/1DQ/3D<@(’-I>F5O9BAL;VYG
0T*(V5L<V4@(" @(" @(" @
M(" @(" @(" @+RH@3D]413H@:&]S=“YH(&ES(“I.3U0J(&EN8VQU9&5D(&EN
M(%-.25!01513(” @(“HO#0HO+R-I;F-L=61E(” @(”)H;W-T+F@B(" @("\J
M($-O;7!I;&5R+V5N=FER;VYM96YT+7-P96-I9FEC(’-T=69F(&=O97,@:&5R
M92 J+PT*(V5N9&EF#0H-“B-E;F1I9@T*#0HOB!3=&%T:6,@9&5F:6YI=&EO
M;G,@9&@;F]T(&%P<&5A<B!I;B!T:&4@;&EN:V5R(“Y-05 @9FEL92X@3W9E
M<G)I9&4@(” J+PT
+RH@=&AE(&1E9FEN:71I;VX@:&5R92!T;R!M86ME('1H
M96T@9VQO8F%L(&EF(&YE8V5S<V%R>2X@(” @(" @(" @B-“B-I9FYD968@
M4U1!5$E##0HC9&5F:6YE(%-4051)0R @(”!S=&%T:6,-"B-E;F1I9@T
#0HC
M9&5F:6YE(&%R<F%Y<VEZ92AA<G)A>2D@(" @(" H<VEZ96]F*&%R<F%Y2 O
M(’-I>F5O9BAA<G)A>5LP72DI#0H-“B\J($UA8W)O<R!S;R!T:&%T(’=E(&-A
M;B!D;R!P<F]T;W1Y<&EN9RP@8G5T(’-T:6QL(’=O<FL@=VET:”!N;VXM("HO
M#0HO
B!P<F]T;W1Y<&EN9R!C;VUP:6QE<G,Z(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" J+PT*#0HC:68@4%)/5$]465!)3D<-"B-D969I
M;F4@4"AS2 @(" @(’,-“B-E;’-E#0HC9&5F:6YE(% H<RD@(” @(" H0T*
M(V5N9&EF#0H-"B-I9F1E9B!$14)51PT*(V1E9FEN92!D96)U9RAA2 @&$I
M#0HC96QS90T*(V1E9FEN92!D96)U9RAA0T(V5N9&EF#0H-“B-E;F1I9B O
0*B!43T],2TE47T@@*B-”@``
`
end

begin 666 mem.c
M#0HOB KRM$871E(&QA<W0@;6]D:69I960Z(# U+4IU;“TQ.3DW(“HO#0H-
M"B\J#0HJB @5&AI<R!I<R!A(&-O<‘ER:6=H=&5D(’=O<FL@=VAI8V@@:7,@
M9G5N8W1I;VYA;&QY(&ED96YT:6-A;"!T;R!W;W)K#0HJ
B @;W)I9VEN86QL
M>2!P=6)L:7-H960@:6X@36EC<F@0V]R;G5C;W!I82!M86=A>FEN92 H:7-S
M=64@(S4R+”!-87)C:“U!<’)I;“P-“BHJ(” Q.3DP2!A;F0@:7,@9G)E96QY
M(&QI8V5N<V5D(&)Y('1H92!A=71H;W(L(%=A;'1E<B!"<FEG:'0L(&9O<B!A
M;GD@=7-E+@T**B-"@T
+RI?(&UE;2YC(” @1G)I($IA;B R-B Q.3DP(” @
M36]D:69I960@8GDZ(%=A;‘1E<B!"FEG:'0@*B\-"B\J($UE;6]R2!M86YA
M9V5M96YT(’!A8VMA9V4@(” @(" @(" @(" @(" @(" @(“HO#0H-“B-I9B!D
M969I;F5D*%9!6#$Q0RD-“B-D969I;F4@(%]?1DE,15]?(” B;65M+F,B#0HC
M96YD:68-”@T*(VEN8VQU9&4@(” @/’-T9&EO+F@^#0HC:6YC;‘5D92 @("
M<W1D;&EB+F@^#0HO+R-I;F-L=61E(" @(#QI;RYH/@T*#0HC:69N9&5F($U%
M35](#0HC:6YC;‘5D92 @(" B:6YC;‘5D92]M96TN:"(-“B-E;F1I9@T*#0HC
M:69N9&5F(&%S<V5R= T*(VEN8VQU9&4@(” @/&%S<V5R="YH/@T*(V5N9&EF
M#0H-“B-I9B!D969I;F5D*%]-4T-?5D520T(VEN8VQU9&4@(” @/&1O<RYH
M/@T*(V5N9&EF#0H-"B-I9B A9&5F:6YE9"A605@Q,4,I#0HC:69D968@0E-$
M54Y)6 T*(VEN8VQU9&4@/’-T<FEN9W,N:#X-"B-E;’-E#0HC:6YC;‘5D92
MW1R:6YG+F@^#0HC96YD:68-"B-E;’-E#0IE’1E<FX@8VAA<B J<W1R8W!Y
M*“DLFUE;6-P>2@I.PT97AT97)N(&EN="!S=’)L96XH3L-“B-E;F1I9B @
M+RH@5D%8,3%#(“HO#0H-“FEN=”!M96U?:6YI=&5D(#T@,#L@(” @(” @(" @
M("\J("$](# @:68@:6YI=&EA;&EZ960@(" @(" @(" @(" @("HO#0H-"G-T
M871I8R!I;G0@;65M7V)E:&%V:6]R(#T@345-7T%"3U)435-’.PT
<W1A=&EC
M(&EN=” HF9P2@I(#T@&EN=" HBDH2E.54Q,.R @(" OB!O=70M;V8M
M;65M;W)Y(&AA;F1L97(@(" @(" J+PT*<W1A=&EC(&EN="!M96U?8V]U;G0[
M(" @(" @(" @+RH@(R!O9B!A;&QO8W,@=&AA="!H879E;B=T(&)E96X@9G)E
M92=D(" @B-“G-T871I8R!I;G0@;65M7W-C;W5N=#L@(” @(" @("\J(",@
M;V8@<V%L;&]C<R!T:&%T(&AA=F5N)W0@8F5E;B!F<F5E)V0@B-"G-T871I
M8R!I;G0@;F5A<B!M96U?97AC97!T:6]N
"D[("\J(&-A;&QE9"!W:&5N(&]U
M="!O9B!M96UO<GD@B-"@T+RH@1&5T97)M:6YE(’=H97)E(‘1O(’-E;F0@
M97)R;W(@;65S<V%G97,@B-"B-I9B!D969I;F5D$U31$]3
2!?"!D969I
M;F5D*%]?35-$3U-?7RD-“B-D969I;F4@9F5R<B @(” @(’-T9&]U=" @(" @
M("\J(’-T9&5R<B!C86XG="!B92!R961I<F5C=&5D(’=I=&@@35,M1$]3(“HO
M#0HC96QS90T*(V1E9FEN92!F97)R(” @(" @<W1D97)R#0HC96YD:68-"@T*
M+RHJBHJBHJBHJBHJBHJBHJBHJBHJBHJBHO#0H-“G9O:60@;65M
M7W-E=&5X8V5P=&EO;BAF;&%G+&AA;F1L97)?9G I#0HC:68@9&5F:6YE9"A?
M7V-P;‘5S<&QU<RD@)B8@7U]C<&QU<W!L=7,-"F5N=6T@345-7T4@9FQA9SL-
M"B-E;’-E#0II;G0@9FQA9SL-“B-E;F1I9@T*:6YT(”@J:&%N9&QE<E]F<“DH
M3L-"GL-“B @(”!M96U?8F5H879I;W(@/2!F;&%G.PT(” @(&9P(#T@&UE
M;5]B96AA=FEO<B ]/2!-14U?0T%,3$90
2 _(&AA;F1L97)?9G @.B P.PT*
M(VEF(&1E9FEN960H1$5"54=?345-0T(” @(&%S<V5R="@P(#P](&9L86<@
M)B8@9FQA9R /2!-14U?4D544EDI.PT*(V5N9&EF#0I]#0H-“B\JBHJBHJ
MBHJBHJBHJBHJBHJBHJ#0H@B!4:&ES(&ES(&-A;&QE9"!W:&5N(’=E
M)W)E(&]U="!O9B!M96UO<GDN#0H@B!2971U<FYS.@T(“H@(” @,3H@(" @
M=’)Y(&%G86EN('1O(&%L;&]C871E(‘1H92!M96UO<GD-“B J(” @(# Z(" @
M(&=I=F4@=7 @86YD(’)E='5R;B!.54Q,#0H@B-"@T<W1A=&EC(&EN="!N
M96%R(&UE;5]E>&-E<'1I;VXH
0T*>R @(&EN=”!B96AA=FEO<CL-"@T*(" @
M(&)E:&%V:6]R(#T@;65M7V)E:&%V:6]R.PT*(" @(’=H:6QE("@Q0T(" @
M(‘L-“B @(” @(’-W:71C:" H8F5H879I;W(I#0H@(" @("![#0H@(" @(" @
M(" @8V%S92!-14U?04)/4E1-4T<Z#0HC:68@9&5F:6YE9"A-4T1/4RD@?‘P@
M9&5F:6YE9"A?7TU31$]37U\I(‘Q(&1E9FEN960H7U]/4S)?7RD-“B @(” @
M(" @(" @("\J($%V;VED(&QI;FMI;F<@:6X@8G5F9F5R960@22]/(“HO#0H@
M(” @(" @(" @>R!S=&%T:6,@8VAA<B!M<V=;72 ](")&871A;"!E<G)O<CH@
M;W5T(&]F(&UE;6]R>5QR7&XB.PT*#0H@(" @(" @(" @("!W<FET92@Q+&US
M9RQS:7IE;V8H;7-G2 M(#$I.PT(" @(" @(" @(‘T-"B-E;’-E#0H@(" @
M(" @(" @("!F<‘5T<R@B1F%T86P@97)R;W(Z(&]U="!O9B!M96UO<GE<;B(L
M9F5R<BD[#0HC96YD:68-“B @(” @(" @(" @("\J($9!3$PM5$A23U5’2" J
M+PT*(" @(" @(" @(&-A<V4@345-7T%“3U)4.@T*(” @(" @(" @(" @97AI
M=“A%6$E47T9!24Q54D4I.PT*(” @(" @(" @(" @+RH@3D]44D5!0TA%1" J
M+PT*(" @(" @(" @(&-A<V4@345-7T-!3$Q&4#H-“B @(” @(" @(" @(&%S
M<V5R=“AF<“D[#0H@(” @(” @(" @("!B96AA=FEO<B ]("@J9G I*“D[#0H@
M(” @(" @(" @("!B<F5A:SL-“B @(” @(" @("!C87-E($U%35]2151.54Q,
M.@T*(" @(" @(" @(" @<F5T=7)N(# [#0H@(" @(" @(" @8V%S92!-14U?
M4D544EDZ#0H@(" @(" @(" @("!R971U<FX@,3L-“B @(” @(" @("!D969A
M=6QT.@T*(" @(" @(" @(" @87-S97)T*# I.PT*(" @(" @?0T*(" @(‘T-
M"GT-"@T*+RHJBHJBHJBHJBHJBHJBHJBHJBHJBHO#0H-"B-I9B!D
M969I;F5D
$1%0E5’7TU%32D-"@T*(W5N9&5F(&UE;5]S=’)D=7 -"@T8VAA
M<B J;65M7W-T<F1U<"AS
0T8V]N<W0@8VAA<B J<SL-"GL-“B @(” @(’)E
M='5R;B!M96U?<W1R9’5P7V1E8G5G
’,L7U]&24Q%7U\L7U],24Y%7U\I.PT*
M?0T*#0IC:&%R("IM96U?<W1R9’5P7V1E8G5G*’,L9FEL92QL:6YE0T8VAA
M<B J9FEL93L-"F-O;G-T(&-H87(@G,[#0II;G0@;&EN93L-"GL-“B @(” @
M(&-H87(@G [#0H-“B @(” @(’ @/2!S#0H@(" @(" @(" @/R H8VAA<B J
M
2!M96U?;6%L;&]C7V1E8G5G
"AU;G-I9VYE9"D@<W1R;&5N*’,I(“L@,2QF
M:6QE+&QI;F4I#0H@(” @(" @(" @.B!.54Q,.PT*(" @(" @<F5T=7)N(’ @
M/R!S=’)C<‘DH<"QS2 Z(’ [#0I]#0HC96QS90T8VAA<B J;65M7W-T<F1U
M<"AS0T8V]N<W0@8VAA<B J<SL-"GL-“B @(” @(&-H87(@G [#0H-“B @
M(” @(’ @/2!S(#@
&-H87(@BD@;65M7VUA;&QO8R@H=6YS:6=N960I(’-T
M<FQE;BAS
2 K(#$I(#H@3E5,3#L-“B @(” @(’)E=‘5R;B!P(#@<W1R8W!Y
M*’ L<RD@.B!P.PT*?0T*#0HC96YD:68@+RH@1$5"54=?345-(“HO#0H,#0HC
M:69D968@1$5"54=?345-#0H-“G-T871I8R!L;VYG(&UE;5]M87AA;&QO8SL@
M(” @(”\J(&UA>" C(&]F(&)Y=&5S(&%L;&]C871E9" @(" @(" @(“HO#0IS
M=&%T:6,@;&]N9R!M96U?;G5M86QL;V,[(” @(" OB!C=7)R96YT(",@;V8@
M8GET97,@86QL;V-A=&5D(" @(" @(" @(" J+PT
#0HC9&5F:6YE($)%1D]2
M159!3" P>#$R,S0U-C<X(" OB!V86QU92!T;R!D971E8W0@=6YD97)R=6X@
M(" J+PT
(V1E9FEN92!!1E1%4E9!3" @,’@X-S8U-#,R,2 @+RH@=F%L=64@
M=&@9&5T96-T(&]V97)R=6X@(" @B-"@T(VEF(%-53B!?"!354XS.#8-
M"G-T871I8R!L;VYG(&%F=&5R=F%L(#T@049415)604P[(" @("\J(’-O(’=E
M(&-A;B!D;R F869T97)V86P@(" @(“HO#0HC96YD:68-”@T*+RH@5&AE(&9O
M;&QO=VEN9R!S:&]U;&0@8F4@<V5L96-T960@=&@9VEV92!M87AI;75M(’!R
M;V)A8FEL:71Y(‘1H870@(" @B-“B\J(’!O:6YT97)S(&QO861E9”!W:71H
M('1H97-E('9A;'5E<R!W:6QL(&-A=7-E(&%N(&]B=FEO=7,@8W)A<V@N($]N
M(" @("HO#0HO
B!5;FEX(&UA8VAI;F5S+"!A(&QA<F=E(‘9A;‘5E(’=I;&P@
M8V%U<V4@82!S96=M96YT(&9A=6QT+B @(" @(" J+PT*+RH@34%,3$]#5D%,
M(&ES(‘1H92!V86QU92!T;R!S970@;6%L;&]C)V0@9&%T82!T;RX@(" @(" @
M(" @(" @(" @B-"@T(VEF($U31$]3(‘Q(%]?35-$3U-?7R!?"!?7T]3
M,E]?#0HC9&5F:6YE($)!1%9!3" @(" @(" @(" P>$9&#0HC9&5F:6YE($U!
M3$Q/0U9!3" P>$5%#0HC96QS90T*(V1E9FEN92!“041604P@(” @(" @(" @
M,’@W00T*(V1E9FEN92!-04Q,3T-604P@,‘A%10T*(V5N9&EF#0H-“B\J($1I
M<V%B;&4@;6%P<&EN9R!M86-R;W,@(” @(“HO#0HC=6YD968@(” @("!M96U?
M;6%L;&]C#0HC=6YD968@(" @("!M96U?8V%L;&]C#0HC=6YD968@(" @("!M
M96U?<F5A;&QO8PT*(W5N9&5F(" @(" @;65M7V9R964-"@T*+RH@0W)E871E
M(&$@;&ES="!O9B!A;&P@86QL;V,G960@<&]I;G1E<G,L(’)E=&%I;FEN9R!I
M;F9O(&%B;W5T(’=H97)E(" @B-“B\J(&5A8V@@86QL;V,@8V%M92!F<F]M
M+B!4:&ES(&ES(&$@<F5A;”!M96UO<GD@86YD(’-P965D(&AO9RP@8G5T(’=H
M;R @("HO#0HO
B!C87)E<R!W:&5N(‘EO=2=V92!G;W0@;V)S8W5R92!P;VEN
M=&5R(&)U9W,N(" @(" @(" @(" @(" @(" @(" J+PT*#0IS=&%T:6,@R @(" @<W1R=6-T(&UH#0H@(" @("![(’-T<G5C
M="!D96)U9U]M96T@DUN97AT.R @(" OB!N97AT(&EN(&QI<W0@(" @(" @
M(" @(" @(" J+PT*(" @(" @("!S=’)U8W0@9&5B=6=?;65M("I-<’)E=CL@
M(" @+RH@<’)E=FEO=7,@=F%L=64@:6X@;&ES=" @(" @B-“B @(” @(" @
M8VAA<B J369I;&4[(" @(" @(" @("\J(&9I;&5N86UE(&]F(’=H97)E(&%L
M;&]C871E9" @(" @(" @(" @(“HO#0H@(” @(" @(&EN="!-;&EN93L@(" @
M(" @(" @(" O
B!L:6YE(&YU;6)E<B!O9B!W:&5R92!A;&QO8V%T960@(" J
M+PT*(" @(" @("!U;G-I9VYE9"!-;F)Y=&5S.R @(" @+RH@<VEZ92!O9B!T
M:&4@86QL;V-A=&EO;B @(" @(" @(" @B-“B @(” @(" @;&]N9R!-8F5F
M;W)E=F%L.R @(" @("\J(&1E=&5C="!U;F1E<G)U;B!O9B!D871A(" @(" @
M(" @(“HO#0H@(” @("!](&T[#0H@(" @("!C:&%R(&1A=&%;,5T[(" @(" @
M(" @(" O
B!T:&4@9&%T82!A8W1U86QL>2!A;&QO8V%T960@(" @(" @(" @
M(" J+PT*?2!M96U?86QL;V-L:7-T(#T-“GL-“B @(‘L@("AS=’)U8W0@9&5B
M=6=?;65M(“HI($Y53$PL#0H@(” @(” H<W1R=6-T(&1E8G5G7VUE;2 J2!.
M54Q,+ T
(” @(" @(FYO;F%M92(L#0H@(" @(" Q,3$Q,2P-“B @(” @(# L
M#0H@(" @("!“149/4D5604P-“B @(‘TL#0HO+R @($%&5$525D%,#0I].PT*
M#0HOB!#;VYV97)T(&9R;VT@82!V;VED(“IT;R!A($1%0E5’7TU%32!S=’)U
M8W0N(” J+PT
(V1E9FEN92!M96U?<‘1R=&]D;"AP2 @"AS=’)U8W0@9&5B
M=6=?;65M(“HI(”@H8VAA<B J7 @+2!S:7IE;V8H<W1R=6-T(&UH2DI#0H-
M"B\J($-O;G9E<G0@9G)O;2!A($1%0E5’7TU%32!S=’)U8W0@=&@82!M96U?
M<'1R+B @(” @(“HO#0HC9&5F:6YE(&UE;5]D;'1O<'1R*&1L2 H’9O:60@
MBD@)B@H9&PI+3YD871A6S!=2D-"@T(V1E9FEN92!N97AT(" @(" @(" @
M(" @;2Y-;F5X= T
(V1E9FEN92!P<F5V(” @(” @(" @(" @;2Y-<’)E=@T*
M(V1E9FEN92!F:6QE(" @(" @(" @(" @;2Y-9FEL90T*(V1E9FEN92!L:6YE
M(" @(" @(" @(" @;2Y-;&EN90T*(V1E9FEN92!N8GET97,@(" @(" @(" @
M;2Y-;F)Y=&5S#0HC9&5F:6YE(&)E9F]R979A;"!M+DUB969O<F5V86P-"@T*
M+RHJBHJBHJBHJBHJBHJBHJBHJBHJBHJ#0H@B!3970@;F5W('9A
M;'5E(&]F(&9I;&4L;&EN90T
("HO#0H-"G9O:60@;65M7W-E=&YE=V9I;&5L
M:6YE
’!T<BQF:6PL;&EN0T=F]I9" J<‘1R.PT8VAA<B J9FEL.PT:6YT
M(&QI;CL-"GL-“B @(”!S=’)U8W0@9&5B=6=?;65M(“ID;#L-@T*(" @(&1L
M(#T@;65M7W!T<G1O9&PH<‘1R3L-“B @(”!D;"T^9FEL92 ](&9I;#L-“B @
M(”!D;"T^;&EN92 ](&QI;CL-“GT-”@T
+RHJBHJBHJBHJBHJBHJBHJ
MBHJBHJBH-“B J(%!R:6YT(&]U=”!S=’)U8W0@9&5B=6=?;65M+@T("HO
M#0H-"G-T871I8R!V;VED(&YE87(@;65M7W!R:6YT9&PH9&PI#0IS=’)U8W0@
M9&5B=6=?;65M(“ID;#L-“GL-“B-I9B!,4%12#0H@(” @(”!F<’)I;G1F*&9E
M<G(L(F%L;&]C)V0@9G)O;2!F:6QE(”<E<R<@;&EN92 E9"!N8GET97,@)60@
M<‘1R(’@E;‘A<;B(L#0H@(" @(" @(" @("!D;“T^9FEL92QD;“T^;&EN92QD
M;“T^;F)Y=&5S+&UE;5]D;'1O<'1R*&1L2D[#0HC96QS90T(” @(” @9G!R
M:6YT9BAF97)R+”)A;&QO8R=D(&9R;VT@9FEL92 G)7,G(&QI;F4@)60@;F)Y
M=&5S("5D(’!T<B!X)7A<;B(L#0H@(" @(" @(" @("!D;“T^9FEL92QD;“T^
M;&EN92QD;“T^;F)Y=&5S+&UE;5]D;'1O<'1R*&1L2D[#0HC96YD:68-“GT-
M”@T
+RHJBHJBHJBHJBHJBHJBHJBHJBHJBH-“B J(%!R:6YT(&]U
M=”!F:6QE(&%N9"!L:6YE(&YU;6)E<BX-"B J+PT
#0IS=&%T:6,@=F]I9”!N
M96%R(&UE;5]F:6QL:6XH9FEL+&QI;BD-“F-H87(@F9I;#L-“FEN=”!L:6X[
M#0I[#0H@(" @("!F<’)I;G1F
&9E<G(L(D9I;&4@)R5S)R!L:6YE(“5D7&XB
M+&9I;“QL:6XI.PT*(” @(” @9F9L=7-H*&9E<G(I.PT*?0T*#0HOBHJBHJ
MBHJBHJBHJBHJBHJBHJBHJ@T*(“H@268@1$5"54=?345-(&ES(&YO
M=”!O;B!F;W(@<V]M92!M;V1U;&5S+”!T:&5S92!R;W5T:6YE<R!W:6QL(&=E
M= T*(“H@8V%L;&5D+@T*(“HO#0H-“G9O:60@FUE;5]C86QL;V,H=2D-“G5N
M<VEG;F5D('4[#0I[#0H@(” @("!R971U<FX@;65M7V-A;&QO8U]D96)U9RAU
M+%]?1DE,15]?+%]?3$E.15]?3L-“GT-”@T=F]I9" J;65M7VUA;&QO8RAU
M
0T*=6YS:6=N960@=3L-“GL-“B @(” @(’)E='5R;B!M96U?;6%L;&]C7V1E
M8G5G*‘4L7U]&24Q%7U\L7U],24Y%7U\I.PT*?0T*#0IV;VED(“IM96U?<F5A
M;&QO8RAP+‘4I#0IV;VED("IP.PT*=6YS:6=N960@=3L-"GL-“B @(” @(’)E
M='5R;B!M96U?<F5A;&QO8U]D96)U9RAP+‘4L7U]&24Q%7U\L7U],24Y%7U\I
M.PT*?0T*#0IV;VED(&UE;5]F<F5E*’ I#0IV;VED(“IP.PT*>PT*(” @(” @
M;65M7V9R965?9&5B=6<H<“Q?7T9)3$5?7RQ?7TQ)3D5?7RD[#0I](” @( T*
M#0H-“B\JBHJBHJBHJBHJBHJBHJBHJBHJB-"@T=F]I9”!M96U?
M9G)E969P*’ I#0IV;VED(“IP.PT*>PT*(” @(” @;65M7V9R964H<“D[#0I]
M#0H-“B\JBHJBHJBHJBHJBHJBHJBHJ@T*(“H@1&5B=6<@=F5R<VEO
M;G,@;V8@;65M7V-A;&QO8R@I+”!M96U?9G)E92@I(&%N9”!M96U?<F5A;&QO
M8R@I+@T*(“HO#0H-“G9O:60@FUE;5]M86QL;V-?9&5B=6<H;BQF:6PL;&EN
M
0T*=6YS:6=N960@;CL-“F-H87(@F9I;#L-“FEN=”!L:6X[#0I[(" @=F]I
M9" J<#L-"@T
"7!R:6YT9B@B;6%L;&]C(“5D(“5D(“5D7&XB+”!N+”!F:6PL
M(&QI;B I.PT*(” @(’ @/2!M96U?8V%L;&]C7V1E8G5G*&XL9FEL+&QI;BD[
M#0H@(” @:68@’ I#0H@(" @("!M96US970H<“Q-04Q,3T-604PL;BD[#0H@
M(” @<F5T=7)N(’ [#0I]#0H-"G9O:60@FUE;5]C86QL;V-?9&5B=6<H;BQF
M:6PL;&EN
0T
=6YS:6=N960@;CL-“F-H87(@F9I;#L-“FEN=”!L:6X[#0I[
M#0H@(" @<W1R=6-T(&1E8G5G7VUE;2 J9&P[#0H-"@EM96U?:6YI="@I.PT

M#0H@(” @9&-“B @(” @(&1L(#T@’-T<G5C="!D96)U9U]M96T@BD-“B @
M(” @(" @("!C86QL;V,H<VEZ96]F
"ID;"D@R!N("L@<VEZ96]F$%&5$52
M5D%,2 M(#$L,2D#0H@(" @=VAI;&4@*&1L(#TB8@;65M7V5X
M8V5P=&EO;B@I
3L-“B @(”!I9B H9&P@/3T@3E5,3"D-“B @(”![#0HC:68@
M, T
(” @(” @<’)I;G1F*”));G-U9F9I8VEE;G0@;65M;W)Y(&9O<B!A;&QO
M8R!O9B E9”!A=” B+&XI.PT*(” @(” @;65M7V9I;&QI;BAF:6PL;&EN3L-
M"B @(" @(’!R:6YT9B@B36%X(&%L;&]C871E9"!W87,Z("5L9%QN(BQM96U?
M;6%X86QL;V,I.PT
(V5N9&EF#0H@(” @("!R971U<FX@3E5,3#L-“B @(”!]
M#0H@(" @9&PM/F9I;&4@/2!F:6P#0H@(" @9&PM/FQI;F4@/2!L:6X[#0H@
M(" @9&PM/FYB>71E<R ](&X[#0H@(" @9&PM/F)E9F]R979A;"
%1D]2
M159!3#L-“B-I9B!354X@?'P@4U5.,S@V(”\J(&)U<R!E<G)O<B!I9B!W92!S
M=&]R92!A(&QO;F<@870@86X@;V1D(&%D9’)E<W,@B-“B @(”!M96UC<‘DH
M)BAD;"T^9&%T85MN72DL)F%F=&5R=F%L+’-I>F5O9BA!1E1%4E9!3"DI.PT

M(V5L<V4-“B @(” J*&QO;F<@BD@)BAD;"T^9&%T85MN72D@/2!!1E1%4E9!
M3#L-"B-E;F1I9@T
#0H@(" @+RH@061D(&1L(‘1O(’-T87)T(&]F(&%L;&]C
M871I;VX@;&ES=" J+PT*(" @(&1L+3YN97AT(#T@;65M7V%L;&]C;&ES=“YN
M97AT.PT*(” @(&1L+3YP<F5V(#T@)FUE;5]A;&QO8VQI<W0[#0H@(" @;65M
M7V%L;&]C;&ES=“YN97AT(#T@9&P[#0H@(” @:68@&1L+3YN97AT("$]($Y5
M3$PI#0H@(" @("!D;"T^;F5X="T^<’)E=B ](&1L.PT
#0H@(" @;65M7V-O
M=6YTRL[#0H@(" @;65M7VYU;6%L;&]C(“L](&X[#0H@(” @:68@&UE;5]N
M=6UA;&QO8R ^(&UE;5]M87AA;&QO8RD-“B @(” @(&UE;5]M87AA;&QO8R ]
M(&UE;5]N=6UA;&QO8SL-“B @(”!R971U<FX@;65M7V1L=&]P=’(H9&PI.PT*
M?0T*#0IV;VED(&UE;5]F<F5E7V1E8G5G*’!T<BQF:6PL;&EN0T=F]I9" J
M<‘1R.PT8VAA<B J9FEL.PT:6YT(&QI;CL-"GL-“B @(” @(’-T<G5C="!D
M96)U9U]M96T@F1L.PT#0H@(" @("!I9B H<‘1R(#T]($Y53$PI#0H@(" @
M(" @(" @("!R971U<FX[#0HC:68@, T*(" @(" @>R @(" @9G!R:6YT9BAF
M97)R+")&<F5E:6YG($Y53$P@<&]I;G1E<B!A=" B3L-“B @(” @(" @(" @
M(&=O=&@97)R.PT
(" @(" @?0T*(V5N9&EF#0H@(" @("!I9B H;65M7V-O
M=6YT(#P](# I#0H@(" @("![(" @("!F<’)I;G1F*&9E<G(L(DUO<F4@9G)E
M97,@=&AA;B!A;&QO8W,@870@(BD[#0H@(" @(" @(" @("!G;W1O(&5R<CL-
M"B @(" @(‘T-“B @(” @(&1L(#T@;65M7W!T<G1O9&PH<‘1R3L-"@D@(&EF
M("@@<'1R(#T]("@@=F]I9" J
3!X965E965E964@2![#0H)"0EF<’)I;G1F
M
"!F97)R+" B26YV86QI9"!P;VEN=&5R(“AE;7!T>2!M96UO<GDI(BD#0H)
M"0EG;W1O(&5R<CL-"@D)?0T*"0D-“B @(” @(&EF("AD;“T^8F5F;W)E=F%L
M(”$
%1D]2159!3"D-“B @(” @('L-“B-I9B!,4%12#0H@(” @(” @(" @
M("!F<’)I;G1F*&9E<G(L(E!O:6YT97(@>“5L>”!U;F1E<G)U;EQN(BQP=’(I
M.PT*(V5L<V4-“B @(” @(" @(" @(&9P<FEN=&8H9F5R<BPB4&]I;G1E<B!X
M)7@@=6YD97)R=6Y<;B(L<‘1R3L-"B-E;F1I9@T(" @(" @(" @(" @9V]T
M;R!E<G(R.PT*(" @(" @?0T*(VEF(%-53B!?"!354XS.#8@+RH@0G5S(&5R
M<F]R(&EF(’=E(’)E860@82!L;VYG(&9R;VT@86X@;V1D(&%D9’)E<W,@(" @
MB-“B @(” @(&EF("AM96UC;7 H)F1L+3YD871A6V1L+3YN8GET97-=+"9A
M9G1E<G9A;"QS:7IE;V8H049415)604PI
2 A/2 P0T(V5L<V4-“B @(” @
M(&EF("@J*&QO;F<@BD@)F1L+3YD871A6V1L+3YN8GET97-=("$]($%&5$52
M5D%,0T(V5N9&EF#0H@(" @("![#0HC:68@3%!44@T
(" @(" @(" @(" @
M9G!R:6YT9BAF97)R+")0;VEN=&5R(’@E;’@@;W9E<G)U;EQN(BQP=’(I.PT*
M(V5L<V4-“B @(” @(" @(" @(&9P<FEN=&8H9F5R<BPB4&]I;G1E<B!X)7@@
M;W9E<G)U;EQN(BQP=’(I.PT*(V5N9&EF#0H@(" @(" @(" @("!G;W1O(&5R
M<C([#0H@(" @("!]#0H@(" @("!M96U?;G5M86QL;V,@+3T@9&PM/FYB>71E
M<SL-“B @(” @(&EF(“AM96U?;G5M86QL;V,@/” P0T(" @(" @>R @(" @
M9G!R:6YT9BAF97)R+")E<G)O<CH@;65M7VYU;6%L;&]C(#T@)6QD+"!D;“T^
M;F)Y=&5S(#T@)61<;B(L#0H@(” @(" @(" @(" @(" @("!M96U?;G5M86QL
M;V,L9&PM/FYB>71E<RD[#0H@(" @(" @(" @("!G;W1O(&5R<C([#0H@(" @
M("!]#0H-“B @(” @("\J(%)E;6]V92!D;"!F<F]M(&QI;FME9"!L:7-T(“HO
M#0H@(” @("!I9B H9&PM/G!R978I#0H@(" @(" @(" @("!D;“T^<’)E=BT^
M;F5X=” ](&1L+3YN97AT.PT*(" @(" @:68@&1L+3YN97AT0T*(" @(" @
M(" @(" @9&PM/FYE>‘0M/G!R978@/2!D;"T^<’)E=CL-"@T*(" @(" @+RH@
M4W1O;7 @;VX@=&AE(&9R965D(’-T;W)A9V4@=&@:&5L<"!D971E8W0@<F5F
M97)E;F-E<R @(" @B-“B @(” @("\J(&%F=&5R(‘1H92!S=&]R86=E(’=A
M<R!F<F5E9"X@(" @(" @(" @(" @(" @(" @(" @(“HO#0H@(” @("!M96US
M970H
’9O:60@BD@9&PL0D%$5D%,+’-I>F5O9B@J9&PI(“L@9&PM/FYB>71E
M<RD[#0H@(” @("!M96U?8V]U;G0M+3L-"@T
(" @(" @+RH@4V]M92!C;VUP
M:6QE<G,@8V%N(&1E=&5C="!E<G)O<G,@:6X@=&AE(&AE87 N(" @(" @B-
M"B-I9B!D969I;F5D
$1,0RD-“B @(” @(‘L@(" @(&EN="!I.PT*(" @(" @
M(" @(" @:2 ](&9R964H9&PI.PT*(" @(" @(" @(" @87-S97)T*&D@/3T@
M,“D[#0H@(” @("!]#0HC96QS90T*(" @(" @9G)E92@H=F]I9" J2!D;“D[
M#0HC96YD:68-“B @(” @(’)E='5R;CL-”@T
97)R,CH-“B @(” @(&UE;5]P
M<FEN=&1L*&1L3L-“F5R<CH-“B @(” @(&9P<FEN=&8H9F5R<BPB9G)E92=D
M(&9R;VT@(BD[#0H@(” @("!M96U?9FEL;&EN
&9I;“QL:6XI.PT*(” @(" @
M87-S97)T*# I.PT*(" @(" @+RH@3D]44D5!0TA%1" J+PT*?0T*#0HOBHJ
M
BHJBHJBHJBHJBHJ*@T*("H@1&5B=6<@=F5R<VEO;B!O9B!M96U?<F5A
M;&QO8R@I+@T*("HO#0H-"G9O:60@FUE;5]R96%L;&]C7V1E8G5G&]L9’ L
M;BQF:6PL;&EN0T=F]I9" J;VQD<#L-“G5N<VEG;F5D(&X#0IC:&%R(“IF
M:6P[#0II;G0@;&EN.PT*>R @('9O:60@G [#0H@(" @<W1R=6-T(&1E8G5G
M7VUE;2 J9&P[#0H-“B @(”!I9B H;B ]/2 P
0T*(” @(‘L@;65M7V9R965?
M9&5B=6<H;VQD<“QF:6PL;&EN3L-“B @(” @(’ @/2!.54Q,.PT(” @(‘T-
M"B @("!E;’-E(&EF(“AO;&1P(#T]($Y53$PI#0H@(” @("!P(#T@;65M7VUA
M;&QO8U]D96)U9RAN+&9I;“QL:6XI.PT*(” @(&5L<V4-“B @(”![#0H@(" @
M("!P(#T@;65M7VUA;&QO8U]D96)U9RAN+&9I;“QL:6XI.PT*(” @(" @:68@
M*’ @(3T@3E5,3"D-“B @(” @('L-“B @(” @(" @("!D;"
T
M;V1L*&]L9’ I.PT*(” @(" @(" @(&EF(“AD;“T^;F)Y=&5S(#P@;BD-“B @
M(” @(” @(” @(&X@/2!D;“T^;F)Y=&5S.PT*(” @(" @(" @(&UE;6-P>2AP
M+&]L9’ L;BD[#0H@(" @(" @(" @;65M7V9R965?9&5B=6<H;VQD<“QF:6PL
M;&EN3L-“B @(” @(‘T-“B @(”!]#0H@(" @<F5T=7)N(’ [#0I]#0H-"B\J
M
BHJBHJBHJBHJBHJBHJBHJBHJBHO#0H-“G9O:60@;65M7V-H96-K
M*“D-“GL@(”!R96=I<W1E<B!S=’)U8W0@9&5B=6=?;65M(“ID;#L-@T*(” @
M(&9O<B H9&P@/2!M96U?86QL;V-L:7-T+FYE>'0[(&1L(”$]($Y53$P[(&1L
M(#T@9&PM/FYE>'0I#0H@(” @("!M96U?8VAE8VMP=’(H;65M7V1L=&]P=’(H
M9&PI3L-“GT-”@T+RHJBHJBHJBHJBHJBHJBHJBHJBHJB-"@T
M=F]I9"!M96U?8VAE8VMP=’(H<“D-“G)E9VES=&5R('9O:60@G [#0I[(" @
M<F5G:7-T97(@<W1R=6-T(&1E8G5G7VUE;2 J9&P[#0H-“B @(”!F;W(@
&1L
M(#T@;65M7V%L;&]C;&ES=“YN97AT.R!D;” A/2!.54Q,.R!D;” ](&1L+3YN
M97AT0T(” @(‘L-“B @(” @(&EF(“AP(#X](“AV;VED(“HI(“8H9&PM/F1A
M=&%;,%TI(“8F#0H@(” @(” @(” @<” (“AV;VED(“HI*“AC:&%R(“HI9&P@
MR!S:7IE;V8H<W1R=6-T(&1E8G5G7VUE;2DM,2 K(&1L+3YN8GET97,I0T*
M(” @(” @(” @(&=O=&@3#$[#0H@(” @?0T*(” @(&%S<V5R="@P3L-"@T
M3#$Z#0H@(" @9&P@/2!M96U?<‘1R=&]D;“AP3L-“B @(”!I9B H9&PM/F)E
M9F]R979A;" A/2!“149/4D5604PI#0H@(” @>PT
(VEF($Q05%(-“B @(” @
M(” @("!F<’)I;G1F*&9E<G(L(E!O:6YT97(@>“5L>”!U;F1E<G)U;EQN(BQP
M3L-“B-E;’-E#0H@(” @(" @(" @9G!R:6YT9BAF97)R+")0;VEN=&5R(’@E
M>"!U;F1E<G)U;EQN(BQP
3L-“B-E;F1I9@T*(” @(" @(" @(&=O=&@97)R
M,CL-“B @(”!]#0HC:68@4U5.(‘Q(%-53C,X-B OB!"=7,@97)R;W(@:68@
M=V4@<F5A9"!A(&QO;F<@9G)O;2!A;B!O9&0@861D<F5S<R @(" J+PT
(" @
M(&EF(“AM96UC;7 H)F1L+3YD871A6V1L+3YN8GET97-=+“9A9G1E<G9A;“QS
M:7IE;V8H049415)604PI2 A/2 P0T*(V5L<V4-“B @(”!I9B HBAL;VYG
M("HI("9D;"T^9&%T85MD;"T^;F)Y=&5S72 A/2!!1E1%4E9!3"D-"B-E;F1I
M9@T
(” @('L-“B-I9B!,4%12#0H@(” @(” @(” @9G!R:6YT9BAF97)R+")0
M;VEN=&5R(’@E;’@@;W9E<G)U;EQN(BQP3L-“B-E;’-E#0H@(” @(" @(" @
M9G!R:6YT9BAF97)R+")0;VEN=&5R(’@E>"!O=F5R<G5N7&XB+’ I.PT
(V5N
M9&EF#0H@(" @(" @(" @9V]T;R!E<G(R.PT*(" @(‘T-“B @(”!R971U<FX[
M#0H-“F5R<C(Z#0H@(” @;65M7W!R:6YT9&PH9&PI.PT*(" @(&%S<V5R="@P
M3L-“GT-”@T(V5L<V4-"@T*+RHJBHJBHJBHJBHJBHJBHJBHJBHJ
MB-"@T=F]I9" J;65M7VUA;&QO8RAN=6UB>71E<RD-“G5N<VEG;F5D(&YU
M;6)Y=&5S.PT*>R @(” @=F]I9" J<#L-"@T*(" @(" @:68@&YU;6)Y=&5S
M(#T](# I#0H@(" @(" @(" @("!R971U<FX@3E5,3#L-“B @(” @(’=H:6QE
M("@Q
0T*(" @(" @>PT*(" @(" @(" @(" @<" ](&UA;&QO8RAN=6UB>71E
M<RD[#0H@(" @(" @(" @("!I9B H<" ]/2!.54Q,0T(" @(" @(" @(" @
M>R @(" @:68@&UE;5]E>&-E<'1I;VXH2D-“B @(” @(" @(" @(" @(" @
M(" @(" @(&-O;G1I;G5E.PT*(" @(" @(" @(" @?0T*(" @(" @(" @(" @
M96QS90T*(" @(" @(" @(" @(" @(" @;65M7V-O=6YTRL[#0H@(" @(" @
M(" @("!B<F5A:SL-“B @(” @(‘T-“B @(” @("\J<’)I;G1F
")M86QL;V,H
M)60I(#T@>“5L>%QN(BQN=6UB>71E<RQP3LJ+PT(” @(" @<F5T=7)N(’ [
M#0I]#0H-“B\JBHJBHJBHJBHJBHJBHJBHJBHJBHO#0H-"G9O:60@
M
FUE;5]C86QL;V,H;G5M8GET97,I#0IU;G-I9VYE9”!N=6UB>71E<SL-“GL@
M(” @(‘9O:60@G [#0H-“B @(” @(&EF("AN=6UB>71E<R ]/2 P0T*(" @
M(" @(" @(" @<F5T=7)N($Y53$P[#0H@(" @("!W:&EL92 H,2D-“B @(” @
M(‘L-“B @(” @(" @(" @(’ @/2!C86QL;V,H;G5M8GET97,L,2D[#0H@(" @
M(" @(" @("!I9B H<" ]/2!.54Q,0T(" @(" @(" @(" @>R @(" @:68@
M*&UE;5]E>&-E<‘1I;VXH2D-“B @(” @(" @(" @(" @(" @(" @(" @(&-O
M;G1I;G5E.PT
(" @(" @(" @(" @?0T*(" @(" @(" @(" @96QS90T*(" @
M(" @(" @(" @(" @(" @;65M7V-O=6YTRL[#0H@(" @(" @(" @("!B<F5A
M:SL-“B @(” @(‘T-“B @(” @("\J<’)I;G1F
")C86QL;V,H)60I(#T@>“5L
M>%QN(BQN=6UB>71E<RQP3LJ+PT(” @(" @<F5T=7)N(’ [#0I]#0H-“B\J
MBHJBHJBHJBHJBHJBHJBHJBHJBHO#0H-"G9O:60@FUE;5]R96%L
M;&]C
&]L9&UE;5]P=’(L;F5W;G5M8GET97,I#0IV;VED("IO;&1M96U?<'1R
M.PT
=6YS:6=N960@;F5W;G5M8GET97,[#0I[(” @=F]I9" J<#L-"@T*(" @
M(&EF(“AO;&1M96U?<'1R(#T]($Y53$PI#0H@(” @("!P(#T@;65M7VUA;&QO
M8RAN97=N=6UB>71E<RD[#0H@(" @96QS92!I9B H;F5W;G5M8GET97,@/3T@
M,"D-“B @(”![(&UE;5]F<F5E*&]L9&UE;5]P=’(I.PT*(" @(" @<" ]($Y5
M3$P[#0H@(" @?0T*(" @(&5L<V4-“B @(”![#0H@(" @("!D;PT*(" @(" @
M(" @(’ @/2!R96%L;&]C*&]L9&UE;5]P=’(L;F5W;G5M8GET97,I.PT*(" @
M(" @=VAI;&4@’ @/3T@3E5,3" F)B!M96U?97AC97!T:6]N"DI.PT*(" @
M(‘T-“B @(” OG!R:6YT9B@B<F5A;&QO8RAX)6QX+"5D2 ](’@E;‘A<;B(L
M;VQD;65M7W!T<BQN97=N=6UB>71E<RQP3LJ+PT(" @(’)E=‘5R;B!P.PT*
M?0T*#0HOBHJBHJBHJBHJBHJBHJBHJBHJBHJ+PT#0IV;VED(&UE
M;5]F<F5E*’!T<BD-“G9O:60@G!T<CL-"GL-“B @(” OG!R:6YT9B@B9G)E
M92AX)6QX5QN(BQP=’(I.RHO#0H@(" @:68@’!T<B A/2!.54Q,0T(” @
M(‘L@87-S97)T*&UE;5]C;W5N=" ^(# I.PT*(" @(" @;65M7V-O=6YT+2T[
M#0HC:68@9&5F:6YE9"A$3$,I(“8F($1,0PT*(” @(" @>R @(" @:6YT(&D[
M#0H-“B @(” @(" @(" @(&D@/2!F<F5E*’!T<BD[#0H@(" @(" @(" @("!A
M<W-E<G0H:2 ]/2 P3L-“B @(” @(‘T-"B-E;’-E#0H@(" @("!F<F5E’!T
M<BD[#0HC96YD:68-“B @(”!]#0I]#0H-“B-E;F1I9B OB!$14)51U]-14T@
M
B-”@T*+RHJBHJBHJBHJBHJBHJBHJBHJBHJB-"@T=F]I9"!M
M96U?:6YI="@I#0I[#0H@(" @("!I9B H;65M7VEN:71E9" ]/2 P0T(" @
M(" @>R @(" @;65M7V-O=6YT(#T@,#L-“B-I9B!D969I;F5D*$1%0E5’7TU%
M32D@#0H@(” @(" @(" @("!M96U?;G5M86QL;V,@/2 P.PT*(" @(" @(" @
M(" @;65M7VUA>&%L;&]C(#T@,#L-“B @(” @(" @(" @(&UE;5]A;&QO8VQI
M<W0N;F5X=" ]($Y53$P[#0HC96YD:68-“B-I9B!D969I;F5D*%]?6E1#7U\I
M('Q(&1E9FEN960H7U]30U]?0T(” @(" @(" @(" @+RH@3F5C97-S87)Y
M(&EF(&UE;5]S9G)E92@I(&-A;&QS(&9R964H2!B969O<F4@86YY(" @B-
M"B @(" @(" @(" @("\J(&-A;&QS('1O(&UA;&QO8R@I+B @(" @(" @(" @
M(" @(" @(" @(" @(" @(“HO#0H@(” @(" @(" @("!F<F5E
&UA;&QO8R@Q
M
2D[(" OB!I;FET:6%L:7IE(’-T;W)A9V4@86QL;V-A=&]R(" @(" J+PT
M(V5N9&EF#0H@(" @(" @(" @("!M96U?:6YI=&5DRL[#0H-“B @(” @('T-
M"@T
?0T*#0HOBHJBHJBHJBHJBHJBHJBHJBHJBHJ+PT#0IV;VED
M(&UE;5]T97)M*“D-“GL-”@T*“0T*(” @(” @:68@&UE;5]I;FET960I#0H@
M(" @("![#0HC:68@9&5F:6YE9"A$14)51U]-14TI( T
(" @(" @(" @(" @
M<F5G:7-T97(@<W1R=6-T(&1E8G5G7VUE;2 J9&P[#0H-“B @(” @(" @(" @
M(&9O<B H9&P@/2!M96U?86QL;V-L:7-T+FYE>‘0[(&1L.R!D;" ](&1L+3YN
M97AT0T(" @(" @(" @(" @>R @(" @9G!R:6YT9BAF97)R+")5;F9R965D
M(’!O:6YT97(Z("(I.PT*(" @(" @(" @(" @(" @(" @;65M7W!R:6YT9&PH
M9&PI.PT*(" @(" @(" @(" @?0T*(VEF(# -“B @(” @(" @(" @(&9P<FEN
M=&8H9F5R<BPB36%X(&%M;W5N="!E=F5R(&%L;&]C871E9" ]/2 E;&0@8GET
M97-<;B(L#0H@(" @(" @(" @(" @(" @("!M96U?;6%X86QL;V,I.PT*(V5N
M9&EF#0HC96QS90T*(" @(" @(" @(" @:68@&UE;5]C;W5N=“D-“B @(” @
M(” @(" @(" @(" @(&9P<FEN=&8H9F5R<BPB)60@=6YF<F5E9"!I=&5M<UQN
M(BQM96U?8V]U;G0I.PT
(" @(" @(" @(" @:68@&UE;5]S8V]U;G0I#0H@
M(" @(" @(" @(" @(" @("!F<’)I;G1F
&9E<G(L(B5D(‘5N9G)E960@<R!I
M=&5M<UQN(BQM96U?<V-O=6YT3L-"B-E;F1I9B OB!$14)51U]-14T@B-
M"B @(" @(" @(" @(&%S<V5R=“AM96U?8V]U;G0@/3T@,” F)B!M96U?<V-O
M=6YT(#T](# I.PT
(" @(" @(" @(" @;65M7VEN:71E9" ](# [#0H@(" @
M("!]#0H-"@EF<’)I;G1F*&9E<G(L(")M96UO<GD@8VAE8VL@8V]M<&QE=&5D
M7&XB3L-“GT-”@T(W5N9&5F(&YE>'0-"B-U;F1E9B!P<F5V#0HC=6YD968@
M9FEL90T*(W5N9&5F(&QI;F4-"B-U;F1E9B!N8GET97,-“B-U;F1E9B!B969O
'<F5V86P-”@``
`
end

When I was working at Philips Automation, one of the toolsmith gurus wrote a
utility called ‘stacktrace’ that was able to unravel the stack even when
stuck deep in Slib. It was full of black magic but at its heart it was based
on some tricks suggested by Steve McPolin, and a debug version of Slib
supplied by someone else (Randy?).

I don’t know if anyone would be able to convince them to release this tool
into the public domain, I sure miss it.

Rob Rutherford

“Rick Lake” <rwlake@!DOIREPMAPSONanp.nl> wrote in message
news:8oejst$ea5$1@inn.qnx.com

Hi,

99 out of 100 times when I get a SIGSEGV it’s at some address that’s
useless to me, because it’s in some deep low level library routine, or
maybe in SLIB. When I startup wd with -TR=pmd to analyze the dump file,
I can’t “unwind stack” nor “show calls” to find out which high level
routine was the culprit.

For instance, today I had a SIGSEGV in a library routine called
__MemFree. What’s more is, this SIGSEGV occurs rearly and I can’t
reproduce it (yet). How can I find out the trace of calls leading to
this routine? How do you guys deal with these kinds of dumps?

a.r.g.a.,
t.i.a.,

rick

Thanks a million. I’ll check it out.

However, my app doesn’t always crash in __MemFree. But your util might
lead me to some clues…


Mario Charest wrote:

Although I don’t have any suggestion of analyzing dump file
such as your. I might offer a few tips:

A crash in MemFree typically indicates memory list corruption.

To detect this, I use set of memory replacement routine that some
checking to memory malloc/free.

I have attached the source, this is taken from I don’t remember where,
it was part of a big set of utility. Hence some reference to MS_DOS
in there. Never took the time to clean that up!

“Rick Lake” <rwlake@!DOIREPMAPSONanp.nl> wrote in message
news:8oejst$ea5$> 1@inn.qnx.com> …
Hi,

99 out of 100 times when I get a SIGSEGV it’s at some address that’s
useless to me, because it’s in some deep low level library routine, or
maybe in SLIB. When I startup wd with -TR=pmd to analyze the dump file,
I can’t “unwind stack” nor “show calls” to find out which high level
routine was the culprit.

For instance, today I had a SIGSEGV in a library routine called
__MemFree. What’s more is, this SIGSEGV occurs rearly and I can’t
reproduce it (yet). How can I find out the trace of calls leading to
this routine? How do you guys deal with these kinds of dumps?

a.r.g.a.,
t.i.a.,

rick

Well, I’m starting to suspect a function wherein alloca() is used.
(alloca() is a memory allocator which uses stack space. According to the
docs the space should get freed up automatically upon return from the
calling function.)

Are there any dangers in using alloca()? Is it possible to leave the
function without the alloca()ted space being freed. (Like say due to a
signal or a longjmp())

rick

  • Some background info -

The function in question is part of a port of the PD libftp-5.8B library
which apparently was written using gcc. The original code didn’t use
alloca(), but a non-standard declaration:

f(int a)
{
char buf[a]; // ANSI C doesn’t allow this (‘a’ is a variable)

}

which I changed using alloca() instead.

Rick Lake wrote:

Hi,

99 out of 100 times when I get a SIGSEGV it’s at some address that’s
useless to me, because it’s in some deep low level library routine, or
maybe in SLIB. When I startup wd with -TR=pmd to analyze the dump file,
I can’t “unwind stack” nor “show calls” to find out which high level
routine was the culprit.

For instance, today I had a SIGSEGV in a library routine called
__MemFree. What’s more is, this SIGSEGV occurs rearly and I can’t
reproduce it (yet). How can I find out the trace of calls leading to
this routine? How do you guys deal with these kinds of dumps?

a.r.g.a.,
t.i.a.,

rick

Previously, Rick Lake wrote in qdn.public.qnx4:

Well, I’m starting to suspect a function wherein alloca() is used.
(alloca() is a memory allocator which uses stack space. According to the
docs the space should get freed up automatically upon return from the
calling function.)

Are there any dangers in using alloca()? Is it possible to leave the
function without the alloca()ted space being freed. (Like say due to a
signal or a longjmp())

No, because alloca() just pushes the stack pointer down, so if you call
another functions its stack frame starts far enough down it doesn’t
trash your alloca()ed memory. The pointer is still good after return,
or should be, at least until you make another function call and start
to use that area of the stack again. Not that you should rely on that.
Anyhow, there’s nothing deallocate.

Is it possible your stack isn’t big enough?

Sam


Sam Roberts (sam@cogent.ca), Cogent Real-Time Systems (www.cogent.ca)

Just to say how this story ended. By accident I stumbled upon a
reproducible SIGSEGV case :slight_smile:

It turned out to be a bug in the libftp-5.8B library where the return
value of a write to a socket wasn’t being checked. Somehow this led to
the socket closing down automatically, but the rest of the library
functions were assuming it was still open which lead to a chain of
events, eventually trashing the stack and incurring the SIGSEGV. My
faith in alloca() has been restored.


regards,

rick

Rick Lake wrote:

Well, I’m starting to suspect a function wherein alloca() is used.
(alloca() is a memory allocator which uses stack space. According to the
docs the space should get freed up automatically upon return from the
calling function.)

Are there any dangers in using alloca()? Is it possible to leave the
function without the alloca()ted space being freed. (Like say due to a
signal or a longjmp())

rick

  • Some background info -

The function in question is part of a port of the PD libftp-5.8B library
which apparently was written using gcc. The original code didn’t use
alloca(), but a non-standard declaration:

f(int a)
{
char buf[a]; // ANSI C doesn’t allow this (‘a’ is a variable)

}

which I changed using alloca() instead.

Rick Lake wrote:

Hi,

99 out of 100 times when I get a SIGSEGV it’s at some address that’s
useless to me, because it’s in some deep low level library routine, or
maybe in SLIB. When I startup wd with -TR=pmd to analyze the dump file,
I can’t “unwind stack” nor “show calls” to find out which high level
routine was the culprit.

For instance, today I had a SIGSEGV in a library routine called
__MemFree. What’s more is, this SIGSEGV occurs rearly and I can’t
reproduce it (yet). How can I find out the trace of calls leading to
this routine? How do you guys deal with these kinds of dumps?

a.r.g.a.,
t.i.a.,

rick