Guys,

We're seeing a weird error from Class::MOP::load_class.  It doesn't
happen all the time, and when I run simple tests I don't see the
error.  Hopefully someone can see something I'm missing in this stack
trace:

Couldn't load class (Company::CompanyBusinessModel) because: Can't
locate 0.pm in @INC (@INC contains: /home/buddy/proj/rent.
com/lib /usr/local/lib/perl5/5.8.9/i686-linux
/usr/local/lib/perl5/5.8.9
/usr/local/lib/perl5/site_perl/5.8.9/i686-linux /usr
/local/lib/perl5/site_perl/5.8.9
/usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux
/usr/local/lib/perl5/vendor_perl/5.8.9 /us
r/local/lib/perl5/vendor_perl /usr/local/lib/perl5/site_perl). at
/usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux/Class/MOP
.pm line 116
        Class::MOP::load_first_existing_class(0) called at
/usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux/Class/MOP.pm lin
e 121
        Class::MOP::load_class(0) called at
/usr/local/lib/perl5/vendor_perl/5.8.9/MooseX/Declare/Syntax/KeywordHandling.pm
l
ine 68
        
MooseX::Declare::Syntax::KeywordHandling::parse_declaration('MooseX::Declare::Syntax::Keyword::Class=HASH(0xc8c264c)'
, '/home/buddy/proj/rent.com/lib/Company/CompanyBusinessModel.pm',
'HASH(0xc8ae634)', 'class', 0) called at /usr/local/lib/pe
rl5/vendor_perl/5.8.9/MooseX/Declare/Syntax/KeywordHandling.pm line 40
        MooseX::Declare::Syntax::KeywordHandling::__ANON__('class', 0)
called at /usr/local/lib/perl5/vendor_perl/5.8.9/i686-
linux/Devel/Declare.pm line 279
        Devel::Declare::linestr_callback('const', 'class', 0) called
at /home/buddy/proj/rent.com/lib/Company/CompanyBusiness
Model.pm line 16
        require Company/CompanyBusinessModel.pm called at
/usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux/Class/MOP.pm line
 101
        Class::MOP::__ANON__() called at
/usr/local/lib/perl5/vendor_perl/5.8.9/Try/Tiny.pm line 74
        eval {...} called at
/usr/local/lib/perl5/vendor_perl/5.8.9/Try/Tiny.pm line 67
        Try::Tiny::try('CODE(0xc91ad0c)',
'Try::Tiny::Catch=REF(0xc91b174)') called at
/usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux/Class/MOP.pm line
110
        Class::MOP::load_first_existing_class('Company::CompanyBusinessModel')
called at /usr/local/lib/perl5/vendor_perl/5.8.9/i686-linux/Class/MOP.pm
line 121
        Class::MOP::load_class('Company::CompanyBusinessModel') called
at /home/buddy/proj/rent.com/lib/Company/Moose.pm line 59
        Company::Moose::load_class('Company::CompanyBusinessModel')
called at /home/buddy/proj/rent.com/lib/Company/Company.pm line 2444
        Company::Company::business_model('Company::Company=HASH(0xc8c2820)')
called at /home/buddy/proj/rent.com/lib/Company/BillingPeriod.pm line
513

The stack trace goes on (and on) for a while, but I think that's all
the interesting parts.  We can see that my method is calling my copy
of load_class (that's the one in Company::Moose), which all it does is
untaint its arg (assuming it looks safe, of course), then call
Class::MOP::load_class with it.  And we can see that the argument is
making it that far.  Then we see some fiddling with Try::Tiny and an
eval and then the argument is still there when it does the actual
require.  But then it does something via
Devel::Declare::linestr_callback and the name of the class has somehow
become '0'.  So I can't figure out what's going on here.

Does anyone have any light they can shed?  Or at least some ideas of
where and what I should do for further debugging?

TIA guys!


            -- Buddy

Reply via email to