summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2003-04-19 18:47:02 (GMT)
committerTim Peters <tim.peters@gmail.com>2003-04-19 18:47:02 (GMT)
commitcf615b52750f557d3c1d4fd8ba9142158e369acd (patch)
treeef8c527cdce494e7e0efe283e5b4c3f7670563b0 /Python
parent53f72d7dcd373106cad3b4dbe6b83d2be0fc4e12 (diff)
downloadcpython-cf615b52750f557d3c1d4fd8ba9142158e369acd.zip
cpython-cf615b52750f557d3c1d4fd8ba9142158e369acd.tar.gz
cpython-cf615b52750f557d3c1d4fd8ba9142158e369acd.tar.bz2
handle_system_exit(): This leaked the current exception info, in
particular leaving the traceback object (and everything reachable from it) alive throughout shutdown. The patch is mostly from Guido. Bugfix candidate.
Diffstat (limited to 'Python')
-rw-r--r--Python/pythonrun.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 29ba120..e5759b7 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -914,12 +914,14 @@ static void
handle_system_exit(void)
{
PyObject *exception, *value, *tb;
+ int exitcode = 0;
+
PyErr_Fetch(&exception, &value, &tb);
if (Py_FlushLine())
PyErr_Clear();
fflush(stdout);
if (value == NULL || value == Py_None)
- Py_Exit(0);
+ goto done;
if (PyInstance_Check(value)) {
/* The error code should be in the `code' attribute. */
PyObject *code = PyObject_GetAttrString(value, "code");
@@ -927,18 +929,28 @@ handle_system_exit(void)
Py_DECREF(value);
value = code;
if (value == Py_None)
- Py_Exit(0);
+ goto done;
}
/* If we failed to dig out the 'code' attribute,
just let the else clause below print the error. */
}
if (PyInt_Check(value))
- Py_Exit((int)PyInt_AsLong(value));
+ exitcode = (int)PyInt_AsLong(value);
else {
PyObject_Print(value, stderr, Py_PRINT_RAW);
PySys_WriteStderr("\n");
- Py_Exit(1);
+ exitcode = 1;
}
+ done:
+ /* Restore and clear the exception info, in order to properly decref
+ * the exception, value, and traceback. If we just exit instead,
+ * these leak, which confuses PYTHONDUMPREFS output, and may prevent
+ * some finalizers from running.
+ */
+ PyErr_Restore(exception, value, tb);
+ PyErr_Clear();
+ Py_Exit(exitcode);
+ /* NOTREACHED */
}
void
{d:rXdWNy5SE96"t6g(f ɏ6דa9X$v_E 1Ɓ nxS!:8/"%nMtZWHEK#`ϟ{ixa"|$wN|`5צApq HDӑ3FhDTY h< js#BwAт(gQ RC 5*w Ђ$R w>Aȧp4D^AhN9ͶddɟR&h7Ht"F̈́i k  (7Ng٭6[2#? \7Ȳ2BM!".۾ D0L_?ݽ  UA'0קZ np.)d9S̀L'h[sJksb0#f(T=HŶj`oTZ3gH 2!i=Tscʁb%UeN/x1tgC 0̋D8Px$>&.yo\BBA?|W؊yȫZdddh2`Gxk"+9 1vYNIwT `N <'LK5 8Z=xa8'ITX.sؚY  7Đ)2~S,Gڍ>B`Fwq}p{~!>33DI[{^wm==.Q(̢v_pb<|4mfI鼡 ]6VÍ\{ӟ45mcFϰb;OD˕ ̪{=q1id5.&4~Wh[==5!WAHU9:gS S;n}^YSjٯt[gV7fjU=zY3 .`23J~ร,Xd+#:BPk }cMEeE.L#ZP*-ɾ9ick#,PnыYlfEƍo#`1kyum|&wti5""PgjGᑣ+ 'gק A/w?.h6,/ih6PsύSD 6'8 ĿNA6x3-. 0b>)qlvAHBfĠ2Gt4ؖM>(`n5*(óq(,#g[l8+] H]u|ƪu?f}}m}ܴh3o00(4&c&)vp]>pûG=қez8tk9NݾʡNi^2'> ~>hCb%jc䨃֥q{p 3-'uu")t`bLaM//Kq3-) Q7R-%kj\wD7H_5?`xϜ 1*) xZeUq+c"n˒rXDĘh{ .Xfc/'.{hvJj<>HCے#ŬO͒cUN趑T)}U4o*kyOw1 ]{gH!ːtr.DUw0~(=Dgnտ$fogh8."8oTc^cW pi;U*^=y/\iJIoS|zOۇ5H0g8g PeT` Z8LLZP9qʝ?r#pVljĜ\ ?JxGr(`5.Zo.D2Ty(k /OIKNN-^31M4!d0tM"s.R8W8{Wt+m- <9deAT͂d\d蔶[z.:~<H\'?!N _}-!/~>Yx޵O`X@xȜgz,?]CGo_lykOl΅ӣfdxdˮ%گ0љ,$Hzǔ .@w q{!|aQ9ڈsVa%::wHY'2e 7Ж D#]29TIk8yM/opL3!ȷn{9~vxH^z;RX}uGvk5;.TZkaj"Mv1+%Y5NZKT4JOY<<8wo#_/Z~dUY`z4|%EfkUX ,,9b$D`*2 ^n> J cB4 ̥6C˴mp]a쏵$K&z CԾXQ2P} g+&CCFlg2|v lx_,yʹaIVu`ĠqeN`#OfύUFT`@.3jq_h3|"DLɮm~'z$.}4RԲ[}&p7O\Fl_STO/;1Eiߖ3i"7&Z <3%91=o#$]w}Ȕc5k 裏 ~15BIJ>ZχzJ"*`q$h𶃺&th>mʳ<Qb_ג|oZ7~tnwA+/؝/#w%1͐/xLpoKOAT(a)ΟTyj`eD{Dz$ϓ~#?7xS}kh<0TJ.q`ڥ,p,W+8qZn3.9?jzX{KlCݯ(+ '&+P9M 5Fr^=nD)^߇-2CC0꒚yk , ^+f_}_NWwN0QQ,Pb,}P?rB?NM ^w?߫NS? zQS/~[3>tWTNB)eR<[!0~yuGcF9*0~|vz|H;?|?rKg 6|}j5,FLm){A>M~1)yEjd_y36H3cDGGїWVU8 6Wت[T+wTW}RJR/9LqCNa)$Bf+PE܎>hpqPT%W?ٕSMY߷tIZU2),b0yG~mZI!" 'e {s d*U:Z4_/?7emm͘[}+2|_se %KWR|Lgno7vion0|5,B4vIK勧]0 " ٳ[r ?zs"?`|}6@>fya264fq] E }}ǬlYP.alZ{Q{cF\Y&7U‘3T 5c,X9.'=r j! A"Qo\PdB Iu'9^sLIu{qju;fI˒ip5oar]rV^+!]yJ|/#0&u?N t$$0c:Gm`63P>\Bl{eb"fO5}e$' OnW,dRR \?<ط>-[7@FlI?ڇܿsӳ{~MQoӔRNKb A>0on:`TMQ3.1ě9\C qra (leK<mW¶:[4qF+c0Z~/$O25ǁl 5 8>cߺk_ŁF**3' 4bB(L&HqxȎx6ƿgQWmx"biCo-(K0[*WPѵ ۚ\DZ&j}̌7] cqZ9e0#$)v5Suތl:Jv\ӁpEFđӼ6>Yg G9T)h`1گvID!umzcgPYH$h71V$Ik$ת!Ɔ2cE%B/̏Ƚ;G=VݷE{WVvS kѶšvoՆ-JpHDO ߎrWuxx] &W.n)!d< nZ5u=;Ҕܤ?>~ϔzviMHDC1 kA#&J`T#)A,({8OR(5@' P}xkZ9+|u+{`{4c}}|%-PЎY*'C%5td->ő4L-|N@#){˔=lqdde9~Kfp!xN" I4:Aa1 DD!XQ~7/nmlއa @ݟ3[t(EɮƤk`01xo c@էFEU~P{l`4s# P54}E̅C< \惼႖@<@.8({;O H%a#]:@>^|ǠWzqEeuQ $Js 'vi0 Z|ËtHN#cX^;`x>+ndh$*8F,k޿m>p ! ;q~ʿa? Ĺ/mWP5YP"U*_j {B I pz^pDjOׇ?G8;~_7ͳOOw77yҶX[I$0I2+m[$yP@kR5EcdLC++\ @խoic=߽+Ź6SX0;>(2w`hq,!d=ę~ibKھ?jY@c7"oB$AiW"* Ho}G'(g6!0hqPR~ٽ f|a:]o⹜uRtMFFZ=~8OQXEI^B|vbB B :An)ˠP~X Chx^w}81T?4G=h4ȺTDy75HCDI}!5rks:tR"&#Rhq$(t79;|e2j |PO"!DD)(pi!`d B S)];^ TKH{z[8nb!y^ߙJƈnNQ~= ulSg$˺q%y$,񐵔jw#P?|vs\c4gq?/%ղ1dMa&QCrdKΣxg`NN(f;~^sd1WG1ȕgT'_"`SA(.{ scQKʊ?wM7Ulf;E6`gϺqd$`b\ԟ !8DJ3ˀ~am蟶Mu`nڃ}&RiB}g rv1, wIf;=[P~~gOUV&f9mŢ;k5̱oj,ML$4I&Е}T?Dlaq#jI>w+ơ6⡯j*iug@%C&Ȑˑ.؛\h\Ũ(+躢)$-cRW_9 w{I[NR>`XD6]CH /ِFyhpA @|z0Ǐ'?#B  тBD I~bg ԰!fOѰЙX\e=ؽv_x:@I*>e@DH%A>&n(?Рb mf!еNa`^(xl;[gj(241"dM[:'kzzDH<kN,#[y l@h@1pk4+%bR1&ː734ϴ'( a<<{!ؖ AXYwE>Ir!ȑ2Ze pFT[Ճ$Ln7,im F7Ǽz | !aWzfLnM1Mr;vY 0f[ L<2fpK8+SFT C dT:3SsCbAّ͛7BLmA@M~hi8Tp͝wn)1 B>h@9dfEw˰*(NJTp=F B'U,@rF ' $HX}g`sx1u"&`IC,]~B>qI$@8EhX_R `{"Q)ZR">~!=ʌCjmMR;y qȫT"tz` *6:8Ƚ4=@J݌s:Mn̷Nr\R"ج'>7r6<#J,uYfXUqD䵙XT\ 'A/Ed=ؼ 'Ю7eh]D }d)v0CMcT+^91 j.-.@k'"B6tn%C]KMsC yb+N/Ob $'肴`c|ѩ<Q$pڨFZVi]86[ kH$*n338hjUΤf}rxϼJgAKɽ q )]\a 2 Hx4{<`"hN6=J l F!AXF|e4 B%! Dj#6([@ڐj@/4:SZeHϯZy1u1ex9uj!3 D!, \/r'22CoIM:Sޞb:Ni㝁tbY6@߃ v*C1eAojH2c7@#M;^$ ϓ "&$AX=;TlXq$؅j5K>_y<8[j,+x0lHNJ(e^η-m6k̻4pE5FS7ĦCZM F ppa'YmaFXLQ$*8(C@xq+ɷ{9=e(彩 (Z]a@siA)fFŨ Llhe(ɨZh:|Nkr#SΔКT<铦k|~lYP `P1&gҩv[ʿ/u5;26mRx S֨ b9\*~J3].cC9ǚ`g0DRhj{k!^$2㮳UnJ04a3$Sg " f#;C`bĪh8,44$fP us-JL@R^X@e7s]i7cZC&,ZFuy5r%etQL8}p?g,ipCҮ{,win m)Gʾit- <낏N݆:xa1  ԘCyCii#Cup0WSHn=㬝uD2E@U:TiLCr[>XnՋyB#3\ưa!18NN;a؝7nCFh˶q [EØȷ' Ȯ520 A:#@^[s8Faosɳ%u#D,ώrOql7)GQ'sN#fd8:P;S(!ۻâ " 99R􀳇[~Y!P6[0EǜӾ 4(UVdffԦa1G=_g#]y{hvBtcaJ}D0ySF|lld։S1pi$$4Nha4G`0gs))R5$lŭiRCrҋGVZ֣т4E}A!Nؤ3Q^7!d 2le;lmqse%Q¹+ٖc 8L+VL׬}oB`fph{x #y$Ճexkb0p:E;3 U4mtAS̪2`pSl,6&qNwZg4 2!:nA:ehaynpP!H&phl%FlFD Dɕ52lh)FL2؋&b|=7O\i4k${8S vWcwqn.w.qj24.i4aθ" /l b1 b5?y>Еh@MGvӗ lHxhR@Q s[s P7 J, " (xGAkH)3a)|#xA8 Ps ^ f= 60aw hʂy }{ y<0Rڊ,A h.ǻBY8BkMDDD93I7lѬD$1fZKM1c|$PYzZȶ154M`f& L s-6|j; 6kR#:-ieiXc\3M.YJ.2ƒ"Οhq|G?~mw9fۜ44R$/q'8 H]!E 5ϞH3Cj,7bGUHS.=4EBJT@h 9a"q>ynnG$(b>Op"s'AOP x)D^coa2#RHƬm]wnT:H O&wU}> R;pC̸̝A~F83m]DI"˪R&4!es4̻2691I4rCss8`,Cvhpq]GlLP%SBǤ5kU[V\N (o.89J2఺QB ZDWH\/E1:>:t#?z21x{pPLJS vkm{tx `z>)" OT>!0 -"ژhRPJȀFM}5@F,AqpQ((w!3=c Hɮ06I-FGJhB'>8@bg_VszFaoFy5@18̰Œ+ p!:@w-Nl29ip[SLB!(:K=â)@YSj)KM^;.Pb*+I5F);C%b G^!r{8]G?Vt;G>1zUI 0!4&bDDjqb53A 5eHhՉ,b @0! X.b&MXQ! "cT [A})}{$KD "r:*fR() P?4`pp+NNЀ22 ( H U(Z %F B$ P9 *'ץ=t٣ bp̵ipWDX5ۍ %װ^-JM/k)s" l>ѯnw۲<2(ʹYfJ 2la$tswiӴJ&R!i%e"*")=Qz$c=@6Cr( /DetfGi(P3Pxt?e;x HT>{ B韞)XPB&1hjj̿q  h"_lO#bV SI#DFfL[YXvYA;WkH$ 0AL5LTDKMM31SD!HX=ȳ@cRh0;j t"I4OID,R 4( #Dsan )S>wB.@ņt: @NLr: I9_|Q^̃oaȡ_l)]OWrtHpb/_}( '#lR1;vz MU j%A͡OSBCt=Z0a sB)0!LqǰC+9 "4%0qad`^4 )>RJh iϼ$32 *w ;*u>4%&Yမ)EbN= ChPǘJ@?nU6Bqz)Nyd§7-I}zŠ`fh;fI=j϶o(//TMwl)pߑɧB`/vSe 675TFr4,C(eJMoQ f|WUF W ,RjD BB!?]-\qM6t,޾F,m4pg3u*2|hhp8@0HOp9u0m Ϗ7a J :!FY0vGu ' jluC3;`a;R}DO]r)ޠ/L8U*nVL`VT>ɧkM)JLR R U@DJ1%MāHA- ALIHIB%SIQ2Q$J4#I@hOx 6";RJ5h#l/B{'2&nf0m R4T Skh %%/.(^1Zʗ Zs% W; 󢊢Pv۱À"P2?W;oֳ7jyMEy!o8 z\BN(#O] iA1e>p$0q,dACJ h{3" .t"\ 3hg&K9qVBg4%ftF~`AI?Ƞ=hxƢW*9HaÌl 2G3ei FՁ|زQ! zI;Hr4H\L%t= plPQcޮ'1F9B`c@ dF2Hl0W p "!X&#w~s=/{CZCP|!L_!ˈcl-U!aDbRGdG2K9( w`r گCx.fH :V<Ɇ_zr8d%Lb SR%3Xa!l Cy=!v4҈m)5;MdLR9 1 Ek!YRMʚ̰΂]u8Z#^)e-^n[hu3 h j\grt Ds~rvh^ut?e:O)׉ vR|;:r=XY;"A3DACMDry>IJ }G(NP$on/S6@PxѦd-J(kBq" I#@ J L*00a"Fo _YUT EM.p'Nvzd2! چE߲;܇Z>3b'_#Fr>g-\+] t'4I. L#ᄆ R:jFi[Ãgoyܡx{s'I zWJ32{ 2*3? V+D`s:zU2 hsyd\޸ -ܔcBsf횵}?>}[~`yJa6QABA0?2 /V*|ηh5wtи2`0CF\XVh ˗2bLdDP GocF(B0̥Hp70*HaC2%MЮHfՅFZb'a)x`V`[ KChST0JKkZ hX10ii;`r*1ѐ:#3 [1g95 1Pe ; HXp"BX174ə&SH-kXUã0& ;$;&^KyCIlZ BMlwA]thա)N^233}}vm7a{(yWI>0FL}C2 ޣ@r:?/ eL@h @\ 9tUGAFs/'sY_>p^=F7^5Uuo(ܙ(powZ{R q7qv$,ē3>45#>R"3q*Je5BK )zCk)b˽ Ϊgr?C!rHfȍiw<ᮝVd@FCȐ# rd!$H_~X =JvQ cǽ~F}٥~Qe]Ęe.bm:9XGQ; 6KfRSMo)C$ЊƂ h+j򤢓&1sp`CD`{!Y;020~f`, _sWT!/Z +ܹ"q F%PI7oJb/r4rYs>Vl 9Bo8X20436' cK0DBG&@ҪB{cERO03 B 9]qeNp=85QjT66Q3JC 2&MF1wBD1[5fuM+0da%aBF HwY$ìY"5DN-a@Q80F(bhن@h&*bnpb"H$b)$ Xr1* ),B280h{鯔"1sZk9CFc351[@o6PeLK G-)َ7Ccc\G\\#\stL ({CKnmEA8~h&NG<tv,5O:)ʴv"3Ul|҆ʰ!%N7EpN`IJS<{]IB0Ψ]A]j`IX=g,D=Mhîx`e 2,r6mh7;% "sSaXҰ 4'!]Pt(y43 P9JANa>>{H3@2W5cT<5;6*2͇pIOo#IHà; !ea!(s>*5<UHlnp㄄gs<$'P u E +}PIBA.b)(;6\sjJp-;uB%/1J&Q%#83ͫmq\C_Z@UA3 pna& ")Q@ h"$=Mvٖ$.~rnd֖%$bc1:LQ?ű hT"yx]8 2}=ڎ_K밙=;⮾i59\HmF%Jfb;P#\9d܌`,/&a#-!,Bp+d?} se/rMjP(Q'<ed)DkF h.;JSD3 ǿtd,K9\KY'F$pL7 J bXt.=`K"0!\=v뎘džEH@BtB5&%&;97ҁn9 APl 0A9!lDHl B٨fjd'`,JD*35!VF1m`jنIl{1Z2-2=91~ .;,85ޢ¸:r11j2Vݢ!a CDnaNJh~^Ihfs>=a@6QLv͛ڀs;%UUʞjiE!s j`%$=6u\0jNaF볃Qacnjw0lIZG|u0z1G|!x5,<(4Ms,o|.MsEmDZJfE2Fg=zgRR˜KxtC呣2tt4|nNB%z%z1 xCҳWNṅ=Ojozz,6bLÑy aāȰ.)ﴳTSIKHHnV{= X.q }@QiNOewg-CuJf%2$=+31ۚ]ٌGŬ>'D NoMr`AK]QbT63fǽV[*X-KMffiZQAR!"PH)$pv01Hј 3fH\D6jW!0 &@&UȤKzƙԖ.zyI?4 P4ȸB?2RF$"s.HPB *jی7ml +b$ rANojAxPbIeQd ,EYHn%sǤѩP|v\?HkSVaS}j/x?(dhir84`pBbҳG[ih+AqZ c1mchh]\;>>MU0U^Rd\=:\Ȳ 8EL0\9Ʋ8޶xn:[̢Qag2b<冶ɑ^3wMf⏸mAm#>ٕz7u FF12]ФdFX%Xg.)7f޵5.aS9V;s(._P<9"PcDLJgƷf48iZ ̄t20!V2K[AAYס|V2'Lɹch)\E%K0F6J (;,C31W>͝laPsYT65 LFd4ܛyd7,[og]i& >x) $8@]qb"w@ HN-(h$ j88ʃe0albڡ[48lf* X PԹթ4IUl `h28+Г%bN]$AN_{Qk}0XǸx -@#z BmÎPGC:_>鸠6y9Fq0:6Lb˟Ghb3v`);ΩD̄=v غ@ 5DL ,Cw|Zm.kdO\ mT0-  ׅ@OT*s[Hl 6lImD/L(PX AM| A @$B @PRD "4P@($ \w{z:30h& \31Vj5ps4?~4c~L"{ɡO(]^tN4@x"OsG32pcaG o6H8clsD5q,ܽSA[)vػB fIư7k1ƢMtp$W1\ &H5LuLs G LdCh@"QcqgB|2nDٱ0aP;:.&$I(ypt" i, Ea Ы riW͘+"7"'LR;Rq!vMyN?$ 1;,7茁G@V2j/v4t=6Г1g$A$FM}g=0b!>hiE3/, "2vr%AMblQsc@M Gr]麃DGV} +`rUr %Z+""6@ PtOHϵ!X!&8 pWN~fHNԃ$PL$1 E7>z 7 5A. PphN؟P=%C**** XmB,DK Ɵ#, {ƀ-0 &`2q33 BQI}hTQ'p01iDjA"P|Ȃgr2[vLEu},J1`m|Oa)[*cnNxjxND20hg]n0)$_-bshwޢ<( `8IAn >[\ҦI&bRjDi/42 #6yxEQEpGCz`@"~)+bn1p@y9@Br7ZP1 JR~/4\l5N9KXfERZEBHa;% $YEo0CoP>" [;!d"8,5%璳5F mC`91o &-oÀR1%2+cqШ코p*ԙ C[ݫTҒc|16OS@:bt א8f/B+nʊIk=G*S @,Җ<OT6Jg9h1x(;C/= p X5J/H/:Hqs8xwVbE/i˙,K}WW?pU>αi-YS~Xw| ~$:a{ȡRw,HB@Qu9:*n ɥ.z !b+ԨAS}J*+S8ņ=ێ#8 tȬT2a>YW/_Q}!PSH Y