linux Fortran使用openmp时报错Segmentation fault (core dumped,如何解决?

使用Fortran下的openmp并行化编程
      !$omp parallel do default(private)  shared(m_random,lgroup)
      do beta=1,10
      tid=OMP_GET_THREAD_NUM()
      write(*,*)tid
发生报错Segmentation fault (core dumped),但同时我的计算机应该有两个线程,报错时只显示了一个进程,即主线程0线程。

img

在使用gdb对生成的core 文件分析下,产生这样的结果

img

第94行代码见上,其中m_random和lgroup是两个数组,在两个线程中需要引用对应的值,但不进行写操作。

      !$omp parallel do 
      do beta=1,10
      tid=OMP_GET_THREAD_NUM()
      write(*,*)tid

若我将第94行代码改作上代码,则显示是有两个线程在运行的

因为才刚刚开始学并行编程,实在解决不了这个问题了,想请问大家怎么解决这个核心转储的问题,以及这个线程数改变是怎么回事。

1、只要一个线程报错,整个程序崩溃,所以只看到一个线程的错误提示。
2、从你给出的代码,没发现问题。需要更多代码。
3、fortran使用omp,可以看看视频https://www.bilibili.com/video/BV1uA411v776?p=1