Nikita Nemkin, 05.05.2013 16:13:
> cdef classes must be (topologically) ordered by inheritance to satisfy the 
> following dependencies:
> 1) dealloc function definition: derived classes call base class dealloc;
> 2) vtable pointer initialization in module init function.
> Wrong order causes C/C++ compilation failure for 1) and segfault on import 
> for 2).
> 
> Normally, source order is the correct order, but forward declarations can 
> change this. See included test case for example.
> I hit this problem because I forward declare all my classes in alphabetic 
> order (and then include class definitions from .pxi files, one class per 
> file).
> 
> The simple (although not obvious) workaround is to reorder forward 
> delarations, but I believe it's worth fixing permanently.
> You can merge this Pull Request by running:
> 
>   git pull https://github.com/nnemkin/cython cdef_class_order
> 
> Or you can view, comment on it, or merge it online at:
> 
>   https://github.com/cython/cython/pull/223

Luckily, this broke the Sage build, by running into an infinite loop while
sorting.

https://sage.math.washington.edu:8091/hudson/job/sage-build/1778/

We clearly need more tests for extension type hierarchies spread across
multiple modules.

Stefan

_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to