每当我在创建线程之前调用 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"
}