For anyone having issues with SplObjectStorages containing corrupt member variables after garbage collection (FatalErrorException after serializing): we used following fix to great effect
<?php
class FixedSplObjectStorage extends SplObjectStorage
{
    public function serialize()
    {
$goodPortion = 'N;;m:a:0:{}';
$startKey = 'N;;m:a:';
$serialized = parent::serialize();
$startPos = strpos($serialized, $startKey);
        if ($startPos !== false) {
$serialized = substr_replace($serialized, $goodPortion, $startPos, -1);
        }
        return $serialized;
    }
}
?>