[perl] Newxz() でとったメモリは Safefree() しないと -Dusemymalloc=y な環境で死ぬ

最近では、-Dusemymalloc=y にして運用している人はほぼいないとおもうのだけれど、Perl5 には -Dusemymalloc という機能があって、Perl5 自体がもっている malloc をつかうことができる。 で、-Dusemymalloc=y なときは、Nexz() 等でとったメモリは Safefree() で開放しないと SEGV する。

なので、ポータブルな Perl5 コードをかきたいときは Newxz でとったメモリは Safefree で返さないといけない。


Bingos 氏が openbsd からおくってきてる CPAN testers レポートがこけているという現象がおきていて、なかなか再現しないなあとおもっていたのだが、そういう理由だった。

OpenBSD が原因じゃないので原因特定にはげしく時間がかかってしまった。

Published: 2013-12-13(Fri) 12:42