does anyone know if Class::InsideOut handles that correctly
Yes. See Threads and fork and CLONE, oh my!. It's specifically what Class::InsideOut was designed to get right for inside-out objects and what Class::Std still gets wrong.
Object::InsideOut gets it right, too, and adds features for cross-thread sharing. But the API and features of O::IO are a bit daunting.
Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.