This looks to be a bug in Perl and may be related to this bug fix reported in perl585delta.pod:

Creating a new thread when weak references exist was buggy, and would often cause warnings at interpreter destruction time.

I'll investigate this further. Thanks.

Update:
After further investigation, I'm fairly sure this is a Perl bug. I could not reproduce the error you received under Cygwin or Solaris, but I did reproduce the warnings mentioned in the quote above. Further, 03-threads.t and 04-shared.t are nearly the same, and 04-shared.t successed for you. I can only recommend upgrading to Perl 5.8.7 if you can.

I'll make note of these sorts of issues in the bug section of the POD.

I got around to installing 5.8.7 and attempted a rebuild of Object::InsideOut, and got the same failures as before, but this time noted that Makefile.pl produced a warning

Locally installed version of Scalar::Util does not support weakened
references. It is strongly recommended that you download the lastest +version
of the Scalar-List-Utils module from CPAN, and attempt to remedy this
deficiency. View this module's documentation for further information.
Writing Makefile for Object::InsideOut

I tracked that down to the XS version not having been built/distributed as a part of 5.8.7. So I pulled the CPAN version and attempted to build it, and it refused to attempt to build. That I tracked down to the can_cc() apparently returning false.

Cutting a long story short(ish), harcoding the $do_xs var in the Scalar-List::Util Makefile to true, allowed me to cleanly build the xs version, making the isweak() and other XS-only functions available. With that, O::IO builds, tests and runs clean.

Why can_cc() fails I cannot work out, but...if you get other failures on Win32, that would be a good starting point.

I should probably raise a bug report against something, but what? AS 813, SL::U or MakeMaker?

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.

The problem comes from can_cc() using the 'cc' value in Config. Thus, the bug is in Module::Install - in inc/Module/Install/Can.pm. It needs to accommodate ExtUtils::FakeConfig, replacing "use Config;" with: