On Mon, May 24, 2010 at 10:19 PM, Buddy Burden <barefootco...@gmail.com> wrote: > Chris, > >> Not sure what part of the previous responses by Nick and Chris didn't make >> sense, but they were fairly clear to me. > > As it happens, no part of their responses were unclear, and I did in > fact reply with code. However, what I apparently did _not_ do is > include the list on those replies (d'oh!). Corrected now. > >> Actual *code* demonstrating the problem would be nice. > > Well, if I had a small example that reproduced the problem, I > certainly would have sent that. But, as I said, I've thus far had no > luck reproducing on a smaller scale. I figured I could either spend a > few more days beating my head against a wall, or I could toss what I > know out here and see if it struck anyone's memory banks. :) > > I've just pushed a fix to our production servers that, again, makes > the error go away, without really fixing it. I added a simple: > > use Company::CompanyBusinessModel; > > into our mason_handler.pl. Our QA guy reports that he can no longer > reproduce the error with that fix in place. But I'd still like to > figure out what's going on there, because obviously this could pop up > again.
Somewhere in the myriad of class loaders and syntax modifiers something is passing '0' to CMOP::load_class. It *looks* like this is coming from Devel::Declare (the thing MooseX::Declare uses to sugar up the syntax) getting confused when it parses the Company::CompanyBusinessModel during the dynamic load. Preloading it "fixes" this by making sure that the class is already loaded when it tries to bring it in (bypassing the auto-loading). Things to check would be your version of Devel::Declare, MooseX::Declare, Class::MOP, Moose etc to make sure they are up to date. Then I'd start working on getting the case reproducible *at all* (sounds like you can't get it to break outside of production, I hate bugs like that) and start stepping through and seeing where things go awry. After that I'd try to take whatever I found from stepping through and reducing it to a minimum test case, and present that to #moose or the list here. -Chris