32bitビルドしています。異常発生時、VisualStudioで見たコールスタックは以下の通りです。起きているように思われました。COMサーバー側で解放&再確保され、アドレスが書き換わってしまっています。起きるというように見えました。余計なものだとは思いますが、ご参考までに修正しようとして挫折した途中のパッチを添付しています。メモリアロケータをCOMサーバー側のデアロケータと同じ種類のものにしないとまずそうです。このため、`ole_rec2variant()`関数内で行っているメモリ確保を`ALLOC_N()`ではなく、`IRecordInfo::RecordCreate()`に変更しています。`IRecordInfo::RecordDestroy()`で解放するようにしています。テストは通るのですが、以下のスクリプトを実行するとメモリ使用量が増加し続けてしまいます。再確保されない雰囲気があるので、これに頼って以下のように`VT_RECORD`の時だけ特別扱いする方法もあるかもしれません。https://bugs.ruby-lang.org/。