From: Song T. <st...@ss...> - 2002-10-29 22:51:09
|
Hi, We are experiencing a deadlock problem in our application. We are using the PythonInterpreter class to execute Python codes in Java. Below is the stack trace of two threads that I think are causing the problem. Three synchronized static methods ( org.python.core.imp.getSyspathJavaLoader, org.python.core.imp.importName and org.python.core.PyJavaClass.lookup ) are called in different orders. Did anybody see this problem before? Is there any workaround? Thanks in advance. Song Stack trace of two threads: "Thread-17" prio=5 tid=0x4ded20 nid=0x1f waiting for monitor entry [0xe7aff000..0xe7b019e0] at org.python.core.imp.getSyspathJavaLoader(imp.java:165) at org.python.core.Py.findClassEx(Py.java:601) at org.python.core.SysPackageManager.findClass(SysPackageManager.java:91) at org.python.core.PyJavaClass.initLazy(PyJavaClass.java:81) at org.python.core.PyJavaClass.lookup(PyJavaClass.java:46) at org.python.core.PyJavaClass.init__bases__(PyJavaClass.java:208) at org.python.core.PyJavaClass.initialize(PyJavaClass.java:100) at org.python.core.PyJavaClass.lookupGivingClass(PyJavaClass.java:666) at org.python.core.PyClass.lookup(PyClass.java:164) at org.python.core.PyInstance.ifindclass(PyInstance.java:226) at org.python.core.PyInstance.invoke(PyInstance.java:262) ...... "Thread-16" prio=5 tid=0x3cd950 nid=0x1e waiting for monitor entry [0xe7c00000..0xe7c019e0] at org.python.core.PyJavaClass.lookup(PyJavaClass.java:35) at org.python.core.PyObject.<init>(PyObject.java:46) at org.python.core.PySequence.<init>(PySequence.java:106) at org.python.core.PyString.<init>(PyString.java:223) at org.python.core.PyException.<init>(PyException.java:56) at org.python.core.Py.ImportError(Py.java:180) at org.python.core.imp.dottedFind(imp.java:414) at org.python.core.imp.importName(imp.java:436) at org.python.core.imp.importName(imp.java:509) at org.python.core.ImportFunction.load(__builtin__.java:967) at org.python.core.ImportFunction.__call__(__builtin__.java:961) at org.python.core.PyObject.__call__(PyObject.java:250) at org.python.core.__builtin__.__import__(__builtin__.java:921) at org.python.core.PyModule.impHook(PyModule.java:95) at org.python.core.PyModule.__findattr__(PyModule.java:72) at org.python.core.PyObject.addKeys(PyObject.java:730) at org.python.core.PyObject.__dir__(PyObject.java:750) at org.python.core.imp.importAll(imp.java:598) at org.python.pycode._pyx45.f$0(<string>) at org.python.pycode._pyx45.call_function(<string>) at org.python.core.PyTableCode.call(PyTableCode.java:155) at org.python.core.Py.runCode(Py.java:1055) at org.python.core.Py.exec(Py.java:1076) at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:145) ...... |
From: Samuele P. <ped...@bl...> - 2002-10-29 23:17:49
|
From: "Song Teng" <st...@ss...> > Hi, > We are experiencing a deadlock problem in our application. We are using the > PythonInterpreter class to execute Python codes in Java. Below is the stack > trace of two threads that I think are causing the problem. Three > synchronized static methods ( org.python.core.imp.getSyspathJavaLoader, > org.python.core.imp.importName and org.python.core.PyJavaClass.lookup ) are > called in different orders. > > Did anybody see this problem before? Is there any workaround? > what version of Jython are you using, getSyspathJavaLoader is no longer synchronized on imp, http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jython/jython/org/python/core/im p.java.diff?r1=2.46&r2=2.47 http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jython/jython/org/python/core/im p.java?rev=2.47&content-type=text/vnd.viewcvs-markup regards. |
From: Song T. <st...@ss...> - 2002-10-30 15:56:11
|
Thanks a lot for your reply. We're using Jython 2.0. I will check out the latest version. ----- Original Message ----- From: "Samuele Pedroni" <ped...@bl...> To: "Song Teng" <st...@ss...>; <jyt...@li...> Sent: Tuesday, October 29, 2002 6:08 PM Subject: Re: [Jython-users] deadlock while importing modules > From: "Song Teng" <st...@ss...> > > Hi, > > We are experiencing a deadlock problem in our application. We are using the > > PythonInterpreter class to execute Python codes in Java. Below is the stack > > trace of two threads that I think are causing the problem. Three > > synchronized static methods ( org.python.core.imp.getSyspathJavaLoader, > > org.python.core.imp.importName and org.python.core.PyJavaClass.lookup ) are > > called in different orders. > > > > Did anybody see this problem before? Is there any workaround? > > > > what version of Jython are you using, getSyspathJavaLoader is no longer > synchronized on imp, > > http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jython/jython/org/python/core /im > p.java.diff?r1=2.46&r2=2.47 > http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/jython/jython/org/python/core /im > p.java?rev=2.47&content-type=text/vnd.viewcvs-markup > > regards. > > |