in reply to XS DESTROY not invoked

Maybe whatever type of object you have, it is not blessed in the right package?

Its easy to find out what you have by using plain print

Also, tye says : don't do in XS what you can do in perl

That might translate to

sub OpenCA::OpenSSL::CRL::new { my $blah = OpenCA::OpenSSL::CRL::_new_from_der(@_); bless $blah, 'OpenCA::OpenSSL::CRL'; } sub OpenCA::OpenSSL::CRL::DESTROY { OpenCA::OpenSSL::CRL::X509_CRL_free(@_); }