gcc/g++のコンパイルで「コンパイラ内部エラー: Segmentation fault」になる場合の対処
gcc/g++のコンパイルで「コンパイラ内部エラー: Segmentation fault」になる場合の対処方法を紹介します。
1.問題点
g++のコンパイルで下記のエラーが発生しました。
% g++ sample.cc
g++: コンパイラ内部エラー: Segmentation fault (プログラム cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
数日前に同じファイルをコンパイルしたときには正常に終了しました。
が違いが分かりません。
ということで、コンパイルで「コンパイラ内部エラー: Segmentation fault」になる場合の対処方法を紹介します。
2.原因
原因は2つあり、1つはコンパイルしたファイルのサイズがかなり大きかったことでした。
そしてもうひとつは、別の作業でulimitコマンドでスタックサイズの上限を小さく(1000)していたためのようです。
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14622
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) unlimited
cpu time (seconds, -t) unlimited
max user processes (-u) 14622
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimite
3.対処
スタックサイズを無制限に変更することでエラーが解消しました。
# ulimit -s unlimited
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14622
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) unlimited
cpu time (seconds, -t) unlimited
max user processes (-u) 14622
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Posted by yujiro このページの先頭に戻る
トラックバックURL
コメントする
greeting