Getting Segmentation fault on aarch64 with PHP
Hi guys,
I just upgraded my Nextcloud PHP docker image to 3.14 and suddenly it Nextcloud stopped working. When I attach to docker image and tried to run php index.php, I've got Segmentation fault
.. but I find from like 10 runs, one was correct and php code get executed.
docker exec -it owncloud_owncloud_1 /bin/sh
/ $ cd /var/www/owncloud/
/var/www/owncloud $ php status.php
Segmentation fault
/var/www/owncloud $ php status.php
Segmentation fault
/var/www/owncloud $ php status.php
Array
(
[installed] => 1
[maintenance] =>
[needsDbUpgrade] =>
[version] => 20.0.10.1
[versionstring] => 20.0.10
[edition] =>
[productname] => Nextcloud
[extendedSupport] =>
)
/var/www/owncloud $ php status.php
Segmentation fault
/var/www/owncloud $ php status.php
Segmentation fault
/var/www/owncloud $ php status.php
Segmentation fault
When I downgraded to 3.13 everything starts working again.. but it took me quite long night to find that :)
Docker image looks like this:
# php7-base
#
# VERSION 0.1
FROM arm64v8/alpine:3.13
# Create user + group & Base packages
RUN addgroup -g 6662 php && adduser -u 6662 -H -s /sbin/nologin -G php -D php && \
apk --update add php7-mcrypt \
php7-soap \
php7-openssl \
php7-gmp \
php7-pdo_odbc \
php7-json \
php7-dom \
php7-pdo \
php7-zip \
php7-mysqlnd \
php7-mysqli \
php7-sqlite3 \
php7-apcu \
php7-pdo_pgsql \
php7-bcmath \
php7-gd \
php7-opcache \
php7-odbc \
php7-pdo_mysql \
php7-pdo_sqlite \
php7-gettext \
php7-xmlreader \
php7-xmlwriter \
php7-simplexml \
php7-xml \
php7-xmlrpc \
php7-bz2 \
php7-mbstring \
php7-iconv \
php7-curl \
php7-ctype \
php7-zlib \
php7-session \
php7-fpm \
php7-fileinfo \
php7 \
msmtp \
php7-intl \
php7-pecl-imagick \
php7-posix && \
rm -rf /var/cache/apk/*
# set recommended PHP.ini settings
# see https://secure.php.net/manual/en/opcache.installation.php
RUN set -xe && \
cd /etc/php7/ && \
sed 's/;include=/include=/g' php-fpm.conf > php-fpm.conf.bak && \
sed 's/;daemonize = yes/daemonize = no/g' php-fpm.conf.bak > php-fpm.conf && \
cd /etc/php7/php-fpm.d/ && \
sed 's/listen = 127.0.0.1:9000/listen = [::]:9000/g' www.conf > www.conf.bak && \
sed 's/;env/env/g' www.conf.bak > www.conf && \
sed 's/;access.log = log\/php7\/$pool.access.log/access.log = \/proc\/self\/fd\/2/g' www.conf > www.conf.bak && \
# php_admin_value[memory_limit] = 32M
sed 's/;php_admin_value\[memory_limit\] = 32M/php_admin_value\[memory_limit\] = 1G/g' www.conf.bak > www.conf && \
# mv www.conf.bak www.conf && \
chown -R php:php /var/log/php7 && \
echo 'opcache.memory_consumption=128' >> /etc/php7/conf.d/opcache-recommended.ini && \
echo 'opcache.interned_strings_buffer=8' >> /etc/php7/conf.d/opcache-recommended.ini && \
echo 'opcache.max_accelerated_files=10000' >> /etc/php7/conf.d/opcache-recommended.ini && \
echo 'opcache.revalidate_freq=1' >> /etc/php7/conf.d/opcache-recommended.ini && \
echo 'opcache.fast_shutdown=1' >> /etc/php7/conf.d/opcache-recommended.ini && \
echo 'opcache.enable_cli=1' >> /etc/php7/conf.d/opcache-recommended.ini && \
echo 'opcache.enable=1' >> /etc/php7/conf.d/opcache-recommended.ini && \
echo 'opcache.save_comments=1' >> /etc/php7/conf.d/opcache-recommended.ini && \
echo 'apc.enable_cli=1' >> /etc/php7/conf.d/apcu.ini && \
echo 'sendmail_path = "/usr/bin/msmtp -t -i"' >> /etc/php7/conf.d/mail.ini
USER php
EXPOSE 9000
CMD ["/usr/sbin/php-fpm7"]
And to make it more strange.. when I move it to x86 virtual machine.. it was working.. so there is some problem in aarch64.
EDIT: I was just checking some issues.. and it looks like there is something wrong with core system more then PHP.. see #12822 (closed), #12792