Crashes webserver when used with apache and mod_php
ausi opened this issue · 5 comments
I’m using Apache 2.4.57 with PHP 8.1.21 loaded as mod_php (PHP SAPI apache2handler).
Using vips via the command line works as expected,
but running the same code on the webserver crashes with the following error:
objc[30622]: +[NSCheapMutableString initialize] may have been in progress in another thread when fork() was called.
objc[30622]: +[NSCheapMutableString 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.
[Wed Jul 26 22:52:34.952832 2023] [core:notice] [pid 28824] AH00052: child pid 30622 exit signal Abort trap (6)
Hi @ausi,
This is an issue on macOS, is that your platform? It's been investigated for ruby-vips:
Possibly, starting php-vips earlier could fix this.
This is an issue on macOS, is that your platform?
Yes:
$ uname -a
Darwin ….local 22.5.0 Darwin Kernel Version 22.5.0: Thu Jun 8 22:22:20 PDT 2023; root:xnu-8796.121.3~7/RELEASE_ARM64_T6000 arm64
Possibly, starting php-vips earlier could fix this.
I don’t know what that means
I have exactly the same problem with nginx 1.23.3 and PHP 8.2.10
The same exact code runs via CLI, but just kills the php-fpm thread it runs on.
From phpinfo();
PHP Version => 8.2.10
System => Darwin km.local 22.5.0 Darwin Kernel Version 22.5.0: Thu Jun 8 22:22:20 PDT 2023; root:xnu-8796.121.3~7/RELEASE_ARM64_T6000 arm64
I recently installed PHP 8.2 and Apache 2.4 with Homebrew on OS X Sonoma.
Running php-libvips from Terminal works fine, but when running it via Apache the server immediately drops connection and crashes.
I see this in the Apache-log:
objc[8822]: +[NSCheapMutableString 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.
Any advice would be greatly appreciated.
Did you read the ruby-vips issue linked above? The problem is with dynamic libraries on macos loading after a fork(). You need to somehow force the library to load earlier in process startup, or perhaps run your server in a VM.