スレッドを作成する前にreaddirを呼び出すと、次のようなエラーが発生します。
perl(2820,0x7fff70c33ca0) malloc: *** error for object 0x10082e600: pointer
being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap
奇妙なことに、スレッドを作成する前にreaddirを呼び出すと発生します(つまり、readdirはどの並行コードでも呼び出されません)。readdirの結果も使用していません。呼び出しを行うだけで、問題が発生するようです。私がそれを取り除くとき、物事はうまくいくようです。いくつかのサンプルコードを以下に示します。
opendir(DIR, $someDir);
my @allFiles = readdir(DIR);
close(DIR);
my $thread = threads->create(\&sub1);
$thread->join();
sub sub1 {
print "in thread\n"
}