[kaffe] kaffe (1.0.7 and CVS) problem with jython

Vesa Kaihlavirta vpkaihla at cc.jyu.fi
Fri Sep 27 02:42:40 PDT 2002


Howdy. I'm a developer in a project (http://www.gzz.info) that runs on java 
and jython. The project is Free, but unfortunately due to evil deadlines
on demos, and such, some of our developers have fallen to use Sun's JDK.

My task is to get the program back to running on a free JVM, and Kaffe
seems to be the best alternative now.

In general, most of the code works pretty well, or if it doesn't, it can be
fixed easily. But the latest is beyond me: it seems to be related to 
Jython and Object's Clone method. That method is native in the kaffe libraries,
and I don't see anything wrong there. Somehow, the python object just isn't
Cloneable.

This piece causes no errors on the commercial JVM's (sun's jdk 1.3.1 & 1.4),
so apparently there's something missing in Kaffe. Any idea what it is, and what
I could do about it? 

If there's not enough info about the problem here, please ask for more.


Here is the traceback, and snippets of code from the failing points:

java -ms128M -mx128M -Dpython.path=depends/jythonlib.jar:depends/pythonlib.jar:depends/yaml.jar -Dpython.verbose=message -Duser.editor=/usr/bin/nano org.python.util.jython Gzz.py  -Dgzzclient=awt -t
Traceback (innermost last):
  File "Gzz.py", line 128, in ?
  File "Gzz.py", line 125, in __init__
  File "Gzz.py", line 95, in set_defaults
java.lang.CloneNotSupportedException: gzz/mediaserver/MediaserverFiler$Group
	at java.lang.Object.clone(Object.java:native)
	at java.lang.reflect.Method.invoke0(Method.java:native)
	at java.lang.reflect.Method.invoke(Method.java:256)
	at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:line unknown, pc 0x854dee1)
	at org.python.core.PyMethod.__call__(PyMethod.java:line unknown, pc 0x854c080)
	at org.python.core.PyObject.__call__(PyObject.java:line unknown, pc 0x84f118c)
	at org.python.core.PyInstance.invoke(PyInstance.java:line unknown, pc 0xb8ac16f)
	at org.python.pycode._pyx0.set_defaults$4(Gzz.py:95)
	at org.python.pycode._pyx0.call_function(Gzz.py:line unknown, pc 0xbf1a91b)
	at org.python.core.PyTableCode.call(PyTableCode.java:line unknown, pc 0x8cf35eb)
	at org.python.core.PyTableCode.call(PyTableCode.java:line unknown, pc 0xacc51bb)
	at org.python.core.PyFunction.__call__(PyFunction.java:line unknown, pc 0xabe1466)
	at org.python.core.PyInstance.invoke(PyInstance.java:line unknown, pc 0x836ae55)
	at org.python.pycode._pyx0.__init__$6(Gzz.py:125)
	at org.python.pycode._pyx0.call_function(Gzz.py:line unknown, pc 0xbf1a965)
	at org.python.core.PyTableCode.call(PyTableCode.java:line unknown, pc 0x8cf35eb)
	at org.python.core.PyTableCode.call(PyTableCode.java:line unknown, pc 0x9c6dd5c)
	at org.python.core.PyTableCode.call(PyTableCode.java:line unknown, pc 0xb8a76f0)
	at org.python.core.PyFunction.__call__(PyFunction.java:line unknown, pc 0xb99318e)
	at org.python.core.PyInstance.__init__(PyInstance.java:line unknown, pc 0xa11347e)
	at org.python.core.PyClass.__call__(PyClass.java:line unknown, pc 0xa1104d5)
	at org.python.core.PyObject.__call__(PyObject.java:line unknown, pc 0x854f1c2)
	at org.python.pycode._pyx0.f$0(Gzz.py:128)
	at org.python.pycode._pyx0.call_function(Gzz.py:line unknown, pc 0xbf1a887)
	at org.python.core.PyTableCode.call(PyTableCode.java:line unknown, pc 0x8cf35eb)
	at org.python.core.PyCode.call(PyCode.java:line unknown, pc 0x8bf369f)
	at org.python.core.Py.runCode(Py.java:line unknown, pc 0xbf1a75b)
	at org.python.core.__builtin__.execfile_flags(__builtin__.java:line unknown, pc 0xbce2a3b)
	at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:line unknown, pc 0xba8ba2c)
	at org.python.util.jython.main(jython.java:line unknown, pc 0x830785e)

java.lang.CloneNotSupportedException: java.lang.CloneNotSupportedException: gzz/mediaserver/MediaserverFiler$Group
make: *** [run] Error 255


Gzz.py, line 95: "self.version = self.filers.getFiler("gzz_fallback_slice").load()"

The getFiler-method:

public Filer getFiler(String id) throws IOException {
	Filer f = (Filer)filers.get(id);
	if (f == null) {
		f = createFiler(id); // createFiler is a protected method! Is that the problem?
		filers.put(id, f);
	}
	return f;
}

--
V.K. <vpkaihla at cc.jyu.fi>
Thank you for reading this.




More information about the kaffe mailing list