From ea0148caf8e3597667e05b68716a002efe37fdab Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Thu, 23 Apr 2009 14:59:44 +0000 Subject: [PATCH] python lock deadlock on MacOSX. git-svn-id: file:///svn/unbound/trunk@1615 be551aaa-1e26-0410-a405-d3ace91eadb9 --- doc/Changelog | 1 + pythonmod/pythonmod.c | 10 +++++++++- testdata/pymod.tpkg | Bin 4266 -> 4386 bytes 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index c68a21937..f57f97443 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - fix for threadsafety in solaris thr_key_create() in tests. - iana portlist updated. - fix pylib test for Darwin. + - fix pymod test for Darwin and a python threading bug in pymod init. 21 April 2009: Wouter - fix for build outside sourcedir. diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 67e07b2b0..fe19bfa25 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -87,6 +87,8 @@ int pythonmod_init(struct module_env* env, int id) SWIG_init(); } + PyEval_AcquireLock(); + /* Initialize Python */ PyRun_SimpleString("import sys \n"); PyRun_SimpleString("sys.path.append('.') \n"); @@ -101,6 +103,7 @@ int pythonmod_init(struct module_env* env, int id) if (PyRun_SimpleString("from unboundmodule import *\n") < 0) { log_err("pythonmod: cannot initialize core module: unboundmodule.py"); + PyEval_ReleaseLock(); return 0; } @@ -108,6 +111,7 @@ int pythonmod_init(struct module_env* env, int id) if ((script_py = fopen(pe->fname, "r")) == NULL) { log_err("pythonmod: can't open file %s for reading", pe->fname); + PyEval_ReleaseLock(); return 0; } @@ -123,6 +127,7 @@ int pythonmod_init(struct module_env* env, int id) if (PyRun_SimpleFile(script_py, pe->fname) < 0) { log_err("pythonmod: can't parse Python script %s", pe->fname); + PyEval_ReleaseLock(); return 0; } @@ -131,25 +136,28 @@ int pythonmod_init(struct module_env* env, int id) if ((pe->func_init = PyDict_GetItemString(pe->dict, "init")) == NULL) { log_err("pythonmod: function init is missing in %s", pe->fname); + PyEval_ReleaseLock(); return 0; } if ((pe->func_deinit = PyDict_GetItemString(pe->dict, "deinit")) == NULL) { log_err("pythonmod: function deinit is missing in %s", pe->fname); + PyEval_ReleaseLock(); return 0; } if ((pe->func_operate = PyDict_GetItemString(pe->dict, "operate")) == NULL) { log_err("pythonmod: function operate is missing in %s", pe->fname); + PyEval_ReleaseLock(); return 0; } if ((pe->func_inform = PyDict_GetItemString(pe->dict, "inform_super")) == NULL) { log_err("pythonmod: function inform_super is missing in %s", pe->fname); + PyEval_ReleaseLock(); return 0; } - PyEval_AcquireLock(); py_cfg = SWIG_NewPointerObj((void*) env->cfg, SWIGTYPE_p_config_file, 0); res = PyObject_CallFunction(pe->func_init, "iO", id, py_cfg); if (PyErr_Occurred()) diff --git a/testdata/pymod.tpkg b/testdata/pymod.tpkg index 7361ffe1c23df4d377ca05479dd334ee5a200269..afce9a6db03e7f74955a8404c6523671190e62d2 100644 GIT binary patch literal 4386 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 cS(kNLmvvc}by=5nS(mx;Z*;15wg6B705pb@~ literal 4266 zcmV;b5LNFViwFRo&eTZ&1MNF|U)xBM`4@eP8bJnoV++f?W}UzKL z{&6knK06OG@WGtjv-aPUcVqj@d(}N`$6x#M3#dH1BumQwbNioI0c%<#Rs(K-;REvn z$8&2SOBJEPg0An3L*8JrAVi>W;JJX1lOYr8KC`H^VTDM*985qNqb{o;S8Mwf{0nu} zFriwh{8hNH95=*&%&&p%OK>ICB?W&upWVJ?`F0@GkxJk5r!^4j-e~N(%nfToePlP- zn7MXO?cE^0P!W2LfFj*G!y)wUZB!7iZk=8=I+t1lyGGV6g8*Yyz6XwXY<9QfPOz0O`~%lD&QbzT01vJn4$_Ut^Ki2u9$2TA^4J>>fY zd2d%<=YQX&{tqz`BSPC5cq6tGg`=Gt$KA=&L4FYyl*f?jDYFA|131R)LK=E~K1BFg zh|`Fpt)H^yq=vY%!kE#hVh!?Xi}B*d>fZK!o_1sv3}yV=O_h5bH)qAjWFRw9a*dgf zr6P5$aEX}rmJD2tDX~Fd3J4V1YL%0{MoEo8V)36NEm-8Unhv!tUT$=uO-% z?QuDsPDGGpwlb)hnE_ShYQ2V;rG%Iqo9UG%(7%A>2PMMUwC3AT0>MNM^8Enn8 zGGh`98IDShkw|voUpZ@~vxRKYMVCj;-08S|w$B}0MO>=lkjI`MZj-2JOG(HZ3KDM@ z7f{3;!^BgUvNO1^dp+(%PM59ZmUV0~n8QMbKYG2NFAMqK^!a%_p8v_X*RRf<|L$Q1 zxX%B+N7;n(U&`q4HoAEYCSkAq3$+N_+uH($>nP=r&)0lNJy6z<}RV&Xy^N_Ug+#+SNZivpzO!ty!B zoj(aIfWpHaRVx+33Brjj4LG^RP8I5{%WGYGcV@y_>l~9P12C<|)~2az zCvCH(8v=-mfv6(yQJUAFe#A7#FrcM_c5!*GAvGkA`M9a6MhUcL{k+}Kn(s=06rkBM z;at1WOtpdXv`U=qA|A9(;X>8xXZWd{Xy=-F%^99*W|NqmA~yvt72VY8?Q=yJ;Ige> zwhR?$WDU)zpDWsh+K`Yx@&xsR+BCs9Q_jyhM_qk~4P5B#=-@;ZP(0-Xw?3Q&j<2EV zYTcxP%xZO18VYt^0^?GxYgAD`syGTozb+wBfv6hl`!+&hFEo@3$*z4Eh2NJ87js-Mb`|1&?3fH3UY1Ju(^RyuBe*v z*b+A*Xs4hwK4>I(1dPT5Cq&SE&~e;Bi+h>JJX*mPm#}RhAnE!@z1gO}^{1Lq1lk=;DQQn_Qq{9VtlHqe! z2HNr?r&l)NJN=b>Id6pN;K)CH{xw!Xbmj#3+JuhpP8wECFSzO3whEW!H*cQlGzxCXH9#CO7JjXrRC z9z{W9`J|FKozjX)@WtkIS4^!SX0!^MVo7!w8FhW3$VJ2WLPs1maR~DTz2H|5mayMoB*-rDoicoDO><2U|ieu@%CkRuKy? z?IIz%p*IK$aaS>8Eo_QMn^Do|2cj7^}Caxfmt{8;G!!u!}Kq9JuM;hE;`sfHeQDAqdgIT_iO%awR zDKT!Er8ssJY&e}-CQCwtL>UZq6!_0#oE~k)VJ#wMqIgYbOh1GP={}*I!*P8mbT@cmx^H&c@9@tK5U7eGSP0eAl~2K zS0(mf(di00^hgqm3!!c~k=c}s``JU-;k8eWP03Cy)2Y_fj5FLb%n&HeJc35kxL`qG z;cQxA9h{&Y^ZHWlD7=bWOT*}BP28^i&Fs9_F}ILm>aPD#-`GNU|i0^EB+}}buxf}Y2DBF5M$mVtN+vP-}P{BXHRKR7NV9r&a zMR4<@`TT+-Q5aj{;ArPDA+u7_B?nQYHEp(t=QG7`n{cYGyW1hnu>i$l z{9dqY;Y6CDku#8CSjXnz$nQEkPw4EjLryaT(yka7L*hVjl7vte8iL zt$1qD1#sFEGc-6Wx*uM#8Ta|wEjo0))lfUlR-VCvhoG)jEuz-qmZ zO7{I{^zP{Y=nK#v{MhpkJw|-4cZjx^{$GpuecdtGD9-);eSS+PQ0v