数か月間実行した後、Raspbian の「セグメンテーション違反」

数か月間実行した後、Raspbian の「セグメンテーション違反」

私はRaspberry Pi 3でRaspbian GNU/Linux 8 (jessie)を実行しています

Linux version 4.1.18-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) )

Apache、PHP、MySQL が動作しています。別の LAN デバイスからデータを読み取り、MySQL DB に記録して、リモート サーバーに送信します。MySQL テーブル内の行は、サーバーに正常に送信された場合のみ、書き込まれてから 7 日後に削除されます。

起動時に、サービスはloop_send.sh10 秒ごとに PHP スクリプトを呼び出すファイルを開始します。

#!/bin/bash
COUNTER=0
WAITTIME=10
while [ $COUNTER -lt 5 ]; do
    /usr/bin/php /var/www/send.php
    sleep $WAITTIME
    #let COUNTER=COUNTER+1
done

send.php は、MySQL に新しいレコードがあるかどうかを確認し、それらをリモート サーバーに送信します。

同様のサービスとして、LAN からデータを読み取り、MySQL テーブルに書き込むための .sh ファイルと PHP ファイルがあります。

これは 2016 年 6 月から正常に動作していました。8 月 31 日にリモート サーバーへのレポートが停止しましたが、電源はオンのままで、現在までネットワークに接続されています。

そこには/var/log/sendservice.err何千ものものがあります:

loop_send.sh: line 9:  3702 Segmentation fault      /usr/bin/php /var/www/send.php
loop_send.sh: line 9:  3708 Segmentation fault      /usr/bin/php /var/www/send.php
loop_send.sh: line 9:  3711 Segmentation fault      /usr/bin/php /var/www/send.php
loop_send.sh: line 9:  3716 Segmentation fault      /usr/bin/php /var/www/send.php
loop_send.sh: line 9:  3722 Segmentation fault      /usr/bin/php /var/www/send.php
loop_send.sh: line 9:  3725 Segmentation fault      /usr/bin/php /var/www/send.php
loop_send.sh: line 9:  3728 Segmentation fault      /usr/bin/php /var/www/send.php
loop_send.sh: line 9:  3735 Segmentation fault      /usr/bin/php /var/www/send.php

続いて以下が多数あります:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/curl.so' - /usr/lib/php5/20131226/curl.so: symbol steerr, version GLIBC_2.4 not defined in file libc.so.6 with link time reference in Unknown on line 0
PHP Fatal error:  Call to undefined function curl_init() in /var/www/communication.php on line 71

その後:

PHP Warning:  PHP Startup: curl: Unable to initialize module
Module compiled with build ID=aPI2013q226,NTS
PHP    compiled with build ID=API20131226,NTS
These options need to match
 in Unknown on line 0
PHP Fatal error:  Call to undefined function curl_init() in /var/www/communication.php on line 71

その後:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/curl.so' - /usr/lib/php5/20131226/curl.so: symbol steerr, version GLIBC_2.4 not defined in file libc.so.6 with link time reference in Unknown on line 0
PHP Fatal error:  Call to undefined function curl_init() in /var/www/communication.php on line 71
    invalid subsection length 4194340, max allowed 36

このログ ファイルは 45 MB で、これらのメッセージはすべて次のメッセージの前に何度も繰り返されます。

「セグメンテーション違反」が他のすべての原因であると思われますが、その理由がわかりません。この問題が発生する前は、Pi にモニターと入力デバイスはありませんでした。

答え1

出力から、メモリにロードされているデータが、すべきメディアから消え去ることがあります。例えば:

ID=aPI2013q226,NTS

これは複数のシングルビット エラーを示しています。投稿した他のログ エントリからも、ロードされているプログラムも同様に破損していることが示唆されています。

SD カードまたはその他のメディアに障害がないことを確認してください。

関連情報