Python f2py在随机实例中崩溃

Python f2py在随机实例中崩溃,python,python-2.7,fortran,fortran77,f2py,Python,Python 2.7,Fortran,Fortran77,F2py,我在f2py上遇到了一个非常恼人的问题,我的代码在这两种情况下都崩溃了 分段错误:11 或者不太频繁地使用 python(7444,0x7fff7c9aa000) malloc: *** error for object 0x102187580: incorrect checksum for freed object - object was probably modified after being freed. *** set a breakpoint in malloc_error_bre

我在f2py上遇到了一个非常恼人的问题,我的代码在这两种情况下都崩溃了

分段错误:11

或者不太频繁地使用

python(7444,0x7fff7c9aa000) malloc: *** error for object 0x102187580: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug Abort trap: 6
但在随机情况下,并非总是如此

更具体地说,在我的代码中,我做了一个for循环,在每个循环中,我调用以下Fortran代码

C FILE: ANGULAR_CORRELATION_FUNCTION_ROUTINES.F

  SUBROUTINE PAIRS_DR(N_SOURCES,X_PIXEL,Y_PIXEL,N_SOURCES_RANDOM,X_PIXEL_RANDOM,Y_PIXEL_RANDOM,PIXEL_SCALE,N_BINS,ANGULAR_DISTANCE_MIN,ANGULAR_DISTANCE_MAX,DR)

  INTEGER N_SOURCES
  REAL*8 X_PIXEL(N_SOURCES)
  REAL*8 Y_PIXEL(N_SOURCES)
  INTEGER N_SOURCES_RANDOM
  REAL*8 X_PIXEL_RANDOM(N_SOURCES_RANDOM)
  REAL*8 Y_PIXEL_RANDOM(N_SOURCES_RANDOM)
  REAL*8 PIXEL_SCALE
  INTEGER N_BINS
  REAL*8 ANGULAR_DISTANCE_MIN
  REAL*8 ANGULAR_DISTANCE_MAX
  INTEGER BIN
  INTEGER DR(N_BINS-1)
Cf2py intent(in) N_SOURCES
Cf2py intent(in) X_PIXEL
Cf2py intent(in) Y_PIXEL
Cf2py intent(in) N_SOURCES_RANDOM
Cf2py intent(in) X_PIXEL_RANDOM
Cf2py intent(in) Y_PIXEL_RANDOM
Cf2py intent(in) PIXEL_SCALE
Cf2py intent(in) N_BINS
Cf2py intent(in) ANGULAR_DISTANCE_MIN
Cf2py intent(in) ANGULAR_DISTANCE_MAX
Cf2py intent(out) DR
Cf2py depend(N_SOURCES) X_PIXEL
Cf2py depend(N_SOURCES) Y_PIXEL
Cf2py depend(N_SOURCES_RANDOM) X_PIXEL_RANDOM
Cf2py depend(N_SOURCES_RANDOM) Y_PIXEL_RANDOM
Cf2py depend(N_BINS) DR

  DLOG_ANGULAR_DISTANCE = (
 >  LOG10(ANGULAR_DISTANCE_MAX) -
 >  LOG10(ANGULAR_DISTANCE_MIN) ) /
 >  (N_BINS - 1)
  ! INITIALIZE
  DO I=1,N_BINS-1
    DR(I) = 0
  ENDDO
  ! COMPUTE DD PAIRS
  DO I=1,N_SOURCES
    DO J=1,N_SOURCES_RANDOM
      ANGULAR_DISTANCE_TEMP = ANGULAR_DISTANCE_APPROX(
 >     X_PIXEL(I) * PIXEL_SCALE,
 >     Y_PIXEL(I) * PIXEL_SCALE,
 >     X_PIXEL_RANDOM(J) * PIXEL_SCALE,
 >     Y_PIXEL_RANDOM(J) * PIXEL_SCALE)
      IF (ANGULAR_DISTANCE_TEMP.ge.ANGULAR_DISTANCE_MIN.and.
 >        ANGULAR_DISTANCE_TEMP.le.ANGULAR_DISTANCE_MAX) THEN
        BIN = INT( ( LOG10(ANGULAR_DISTANCE_TEMP) -
 >                   LOG10(ANGULAR_DISTANCE_MIN) ) /
 >                   DLOG_ANGULAR_DISTANCE ) + 1
        DR(BIN) = DR(BIN) + 1
      ELSE
      ENDIF
    ENDDO
  ENDDO
  END

C END FILE: ANGULAR_CORRELATION_FUNCTION_ROUTINES.F

  REAL FUNCTION ANGULAR_DISTANCE_APPROX(X_1, Y_1, X_2, Y_2)
    REAL*8 X_1, Y_1
    REAL*8 X_2, Y_2
    ANGULAR_DISTANCE_APPROX = SQRT(
 > (X_1 - X_2)**2.0 + (Y_1 - Y_2)**2.0)
  RETURN
  END

我的代码有时运行时没有错误,但有时会崩溃。关于为什么会发生这种情况以及如何识别问题的任何建议?

查找接口和数组边界冲突的正确性。当代码未崩溃时,结果是否正确?查找接口和数组边界冲突的正确性。当代码未崩溃时,结果是否正确?