Issue1546

classification
Title: Jython crashes with java.lang.NullPointerException in org.python.core.PyType.computeLinearMro() when running a webpy application under Tomcat and modjy
Type: Severity: normal
Components: Core Versions: 2.5.1
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: amak Nosy List: amak, jlist, pjenvey, zyasoft
Priority: Keywords:

Created on 2010-01-27.18:33:03 by jlist, last changed 2010-08-15.16:57:07 by zyasoft.

Files
File name Uploaded Description Edit Remove
JythonServlet.java amak, 2010-04-10.10:40:33
Messages
msg5460 (view) Author: (jlist) Date: 2010-01-27.18:35:45
I tried to run web.py with modjy and got this exception.
I tried moving jython.jar from the WEB-INF/lib directory
to tomcat lib directory but it didn't help.

java.lang.NullPointerException
       org.python.core.PyType.computeLinearMro(PyType.java:487)
       org.python.core.PyJavaType.init(PyJavaType.java:187)
       org.python.core.PyType.createType(PyType.java:1175)
       org.python.core.PyType.addFromClass(PyType.java:1116)
       org.python.core.PyType.fromClass(PyType.java:1192)
       org.python.core.PyObject.<init>(PyObject.java:67)
       org.python.core.PyMethod.<init>(PyMethod.java:30)
       org.python.core.PyReflectedFunction._doget(PyReflectedFunction.java:46)
       org.python.core.PyObject.__get__(PyObject.java:3672)
       org.python.core.PyObject.object___findattr__(PyObject.java:3716)
       org.python.core.PyObject.object___getattribute__(PyObject.java:3688)
       org.python.core.PyObject$object___getattribute___exposer.__call__(Unknown
Source)
       org.python.core.PyObjectDerived.__findattr_ex__(PyObjectDerived.java:993)
       org.python.core.PyObject.__getattr__(PyObject.java:929)
       modjy.modjy_publish$py.get_app_object$4(C:\java\jython2.5.1\Lib\modjy\modjy_publish.py:63)
       modjy.modjy_publish$py.call_function(C:\java\jython2.5.1\Lib\modjy\modjy_publish.py)
       org.python.core.PyTableCode.call(PyTableCode.java:165)
       org.python.core.PyBaseCode.call(PyBaseCode.java:297)
       org.python.core.PyBaseCode.call(PyBaseCode.java:191)
       org.python.core.PyFunction.__call__(PyFunction.java:385)
       org.python.core.PyFunction.__call__(PyFunction.java:380)
       org.python.modules.SynchronizedCallable.__call__(synchronize.java:53)
       org.python.core.PyObject.__call__(PyObject.java:355)
       org.python.core.PyMethod.__call__(PyMethod.java:215)
       org.python.core.PyMethod.instancemethod___call__(PyMethod.java:221)
       org.python.core.PyMethod.__call__(PyMethod.java:206)
       org.python.core.PyObject.__call__(PyObject.java:414)
       org.python.core.PyObject.__call__(PyObject.java:418)
       modjy.modjy$py.dispatch_to_application$9(C:\java\jython2.5.1\Lib\modjy\modjy.py:103)
       modjy.modjy$py.call_function(C:\java\jython2.5.1\Lib\modjy\modjy.py)
       org.python.core.PyTableCode.call(PyTableCode.java:165)
       org.python.core.PyBaseCode.call(PyBaseCode.java:297)
       org.python.core.PyBaseCode.call(PyBaseCode.java:191)
       org.python.core.PyFunction.__call__(PyFunction.java:385)
       org.python.core.PyMethod.__call__(PyMethod.java:215)
       org.python.core.PyMethod.instancemethod___call__(PyMethod.java:221)
       org.python.core.PyMethod.__call__(PyMethod.java:206)
       org.python.core.PyObject.__call__(PyObject.java:432)
       org.python.core.PyObject.__call__(PyObject.java:436)
       modjy.modjy$py.service$7(C:\java\jython2.5.1\Lib\modjy\modjy.py:80)
       modjy.modjy$py.call_function(C:\java\jython2.5.1\Lib\modjy\modjy.py)
       org.python.core.PyTableCode.call(PyTableCode.java:165)
       org.python.core.PyBaseCode.call(PyBaseCode.java:297)
       org.python.core.PyBaseCode.call(PyBaseCode.java:191)
       org.python.core.PyFunction.__call__(PyFunction.java:385)
       org.python.core.PyMethod.__call__(PyMethod.java:215)
       org.python.core.PyMethod.instancemethod___call__(PyMethod.java:221)
       org.python.core.PyMethod.__call__(PyMethod.java:206)
       org.python.core.PyObject.__call__(PyObject.java:367)
       org.python.core.PyObject._jcallexc(PyObject.java:3500)
       org.python.proxies.modjy.modjy$modjy_servlet$2.service(Unknown Source)
       com.xhaus.modjy.ModjyJServlet.service(ModjyJServlet.java:126)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache
Tomcat/6.0.18 logs.
msg5628 (view) Author: Philip Jenvey (pjenvey) Date: 2010-04-04.18:25:45
We really need to isolate the problem more, ideally with a reproducible script. Though if this can only be reproduced within modjy, the script case could be more difficult to produce
msg5650 (view) Author: Alan Kennedy (amak) Date: 2010-04-10.10:40:32
We've had a variety of problems running jython under tomcat, and other containers. They are not necessarily modjy specific. The following bug, for example,

Jython crashes in unknown circumstances when running on some servlet containers.
http://bugs.jython.org/issue1489

can be reproduced with a very small piece of code that doesn't use modjy.

Please can I ask you to try running the attached java code, from the above bug, and see if that recreates the problem you're seeing? That should give us a good starting point.

Lastly, what version of jython are you running? Leo made some fixes to the classloading system back in January. 

http://fisheye3.atlassian.com/changelog/jython/?cs=6970

I think that this problem is related to classloading, or related classloading configuration for the container.

It would be good if you try out Leo's fixes by running the latest code. Can you build from trunk and try that to see if it fixes the problem?

Philip, we really need to get a 2.5.2 out the door; there's too many outstanding bug fixes unreleased.
msg5968 (view) Author: Jim Baker (zyasoft) Date: 2010-08-15.16:57:07
Is this still an issue?
History
Date User Action Args
2010-08-15 16:57:07zyasoftsetnosy: + zyasoft
messages: + msg5968
2010-04-10 10:40:34amaksetfiles: + JythonServlet.java
assignee: amak
messages: + msg5650
nosy: + amak
2010-04-04 18:25:46pjenveysetnosy: + pjenvey
messages: + msg5628
2010-01-27 18:35:46jlistsetmessages: + msg5460
2010-01-27 18:33:04jlistcreate