All the debugging code I put in never showed a called with an undef for the ID... But even if it was there, it doesn't seem to bomb:
@r = MyApp::Sets->search_where(ID => undef);
print Dumper \@r
$VAR1 = ;
Which is what it should do - return an empty set when the search returns nothing...
For now, I've modified Speedy to exit after a single run - this means that I still run my script from the compiled version, but not persistantly. Seems to work around the problem, but of course, not ideal.
Any other ideas what I should be looking at?
Thanks for all the suggestions so far!