NAME
Darwin::InitObjC - initializes Objective-C runtime
SYNOPSIS
use
Darwin::InitObjC;
Darwin::InitObjC::maybe_init();
my
$pid
=
fork
//
die
;
if
(
$pid
== 0) {
do_something();
exit
;
}
wait
;
DESCRIPTION
Darwin::InitObjC initializes Objective-C runtime.
In macOS 13+, initialising Objective-C APIs in forked processes are treated as errors. So you may see the following errors when executing your scripts:
objc[80048]: +[NSString initialize] may have been in progress in another thread
when
fork
() was called.
objc[80048]: +[NSString initialize] may have been in progress in another thread
when
fork
() was called. We cannot safely call it or ignore it in the
fork
() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
A workaround is to initilize Objective-C runtime before calling fork(2).
SEE ALSO
https://bugs.ruby-lang.org/issues/14009
COPYRIGHT AND LICENSE
Copyright 2024 Shoichi Kaji <skaji@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.