> I'm experiencing a strange problem with Soya. When I run any code > which calls soya.Shape.get, soya.Material.get (and probably some > others - I haven't managed to find more) I get an error like this one: > #v+ > $ python basic-1.py > * Soya 3D * Using 8 bits stencil buffer > > * Soya 3D * version 0.9.2 > * Using OpenGL 1.3 Mesa 6.2.1 > * - renderer : Mesa DRI R200 20040929 AGP 1x TCL > * - vendor : Tungsten Graphics, Inc. > * - maximum number of lights : 8 > * - maximum number of clip planes : 6 > * - maximum number of texture units : 4 > * - maximum texture size : 1024 pixels > > * Soya * Converting data/worlds/sword.data to Shape... > Traceback (most recent call last): > File "/usr/lib64/python2.4/site-packages/soya/__init__.py", line > 308, in > load > File "/usr/lib64/python2.4/site-packages/soya/__init__.py", line > 168, in > save > File "/usr/lib64/python2.4/site-packages/soya/__init__.py", line > 176, in > __reduce__ > File "base.pyx", line 338, in _soya._CObj.__reduce__ > File "base.pyx", line 331, in _soya._CObj.__getstate__ > File "shape.pyx", line 136, in _soya._SimpleShape.__getcstate__ > KeyError: -1431482704 > * Soya * WARNING : can't save compiled shape sword! > zsh: segmentation fault python basic-1.py
> The problem is, as one might see, the random-like list index. I had a > look at the shape.pyx and that line 136 is > chunk_add_int_endian_safe (chunk, > material_id2index[face.pack.material_id]) Most probably > face.pack.material_id contains some rubbish instead of a real index. Actually Soya doesn't support 64 bits yet, mainly because it has never been tested with it. face.pack.material_id should contain the memory address of the material (i.e. id(material)) ; material_id is defined as an int, but maybe this is not enough for a 64bit memory address ? Jiba
