HOME > 利用者支援 > FAQ > HA8000クラスタシステムFAQ > segmentation violation occurred. について

segmentation violation occurred. について

segmentation violation occurred. について

 エラーコード中に segmentation violation occurred. というメッセージが出る場合は、お使いのプログラム中において以下のことが考えられます。

  • 関数の引数や配列の参照に問題がある
  • 取り扱うデータサイズによって起こる可能性もある

 IntelコンパイラPGIコンパイラでは、mpif90 -C ***.f してコンパイルすると実行時に配列を壊しているところで止まってくれます。
 日立コンパイラの場合 -subchk, -debug などをご利用されることで、デバック作業を行うことができます。
 以下は、Aのサイズが100なのに無理やりA(101)に値を代入して書かせようとした例です。普通のコンパイルだと実行できてしまいます。


プログラム例

$ cat test.f
   real*8 A(100)
   A(100)= 1.d0
   n= 101
   A(n)= 1.d0
   write (*,*) A(n)
   stop
   end

Intelコンパイラの場合

$ source /opt/itc/mpi/mpiswitch.sh mpich-mx-intel
$ ifort -C test.f
$ ./a.out


forrtl: severe (408): fort: (2): Subscript #1 of the array A has value 101 which is greater than the upper bound of 100


Image PC Routine Line Source
a.out 0000000000457572 Unknown Unknown Unknown
a.out 0000000000456504 Unknown Unknown Unknown
a.out 00000000004186FA Unknown Unknown Unknown
a.out 00000000004039F1 Unknown Unknown Unknown
a.out 0000000000402C50 Unknown Unknown Unknown
a.out 0000000000402A7D Unknown Unknown Unknown
a.out 0000000000402A02 Unknown Unknown Unknown
libc.so.6 000000397241D8B4 Unknown Unknown Unknown
a.out 0000000000402929 Unknown Unknown Unknown

PGIコンパイラの場合

$ source /opt/itc/mpi/mpiswitch.sh mpich-mx-pgi
$ pgf90 -C test.f
$ ./a.out


0: Subscript out of range for array a (a.f: 4)
  subscript=101, lower bound=1, upper bound=100, dimension=1