I believe I hit the same bug, using extract on a polymorphic type. In the old code, I used make_constructor, passing object to it, and using extract. In the new code, I don't use make_constructor, just use bp::init. My segfault is gone. Maybe just luck?