fortran - Fortran 代码从一个简单的释放行崩溃
问题描述
我正在修改一个开源程序,当它执行一个非常简单的行时,它在某些设置下崩溃。我不明白为什么这条线会导致程序崩溃。这条线是
IF (allocated(bec%k)) DEALLOCATE(bec%k)
该行在崩溃之前执行了多次,但是在某些程序设置的某个点之后,它会使程序崩溃。bec%k 总是在此行执行时分配。编译器是 gfortran。
导致错误的终端输出显示:
free(): invalid next size (normal)
Program received signal SIGABRT: Process abort signal.
Backtrace for this error:
#0 0x7f428db872da in ???
#1 0x7f428db86503 in ???
#2 0x7f428cfe4f1f in ???
#3 0x7f428cfe4e97 in ???
#4 0x7f428cfe6800 in ???
#5 0x7f428d02f896 in ???
#6 0x7f428d036909 in ???
#7 0x7f428d03e0ac in ???
#8 0x56366a04e2b6 in __becmod_MOD_deallocate_bec_type
at /home/john/Desktop/q-e-qe-6.3/Modules/becmod.f90:401
#9 0x563669e734f4 in update_hamiltonian_
at /home/john/Desktop/ce-tddft-6.3-another-copy/src/update_ham.f90:61
#10 0x563669e7ab70 in molecule_optical_absorption_
at /home/john/Desktop/ce-tddft-6.3-another-copy/src/molecule_optical_absorption.f90:538
#11 0x563669e6e2c4 in tddft_main
at /home/john/Desktop/ce-tddft-6.3-another-copy/src/tddft_main.f90:118
#12 0x563669e6de6e in main
at /home/john/Desktop/ce-tddft-6.3-another-copy/src/tddft_main.f90:19
我还在输出文件中收到以下错误消息:
mpirun noticed that process rank 0 with PID 0 on node JohnUbuntu exited on signal 6 (Aborted).
如果您有兴趣,这里是该行所属的子例程以及 bec 数据类型
!-----------------------------------------------------------------------
SUBROUTINE deallocate_bec_type (bec)
!-----------------------------------------------------------------------
!
USE mp, ONLY: mp_get_comm_null
IMPLICIT NONE
TYPE (bec_type) :: bec
!
bec%comm = mp_get_comm_null()
bec%nbnd = 0
!
IF (allocated(bec%r)) DEALLOCATE(bec%r)
IF (allocated(bec%nc)) DEALLOCATE(bec%nc)
IF (allocated(bec%k)) DEALLOCATE(bec%k)
!
RETURN
!
END SUBROUTINE deallocate_bec_type
TYPE bec_type
REAL(DP), ALLOCATABLE :: r(:,:) ! appropriate for gammaonly
COMPLEX(DP),ALLOCATABLE :: k(:,:) ! appropriate for generic k
COMPLEX(DP),ALLOCATABLE :: nc(:,:,:) ! appropriate for noncolin
INTEGER :: comm
INTEGER :: nbnd
INTEGER :: nproc
INTEGER :: mype
INTEGER :: nbnd_loc
INTEGER :: ibnd_begin
END TYPE bec_type
任何有关导致它的原因或做什么的建议将不胜感激。
解决方案
推荐阅读
- java - DateTimeFormatter.format 与大陆/城市
- html - 您如何使 ::after 部分 css pentagon 响应?
- npm - Vue app with WebStorm in mac npm ERR! missing script: dev
- laravel - Role Checking Before Access
- python - 如何根据列创建重复行?
- javascript - 随机掉落的图像
- amazon-web-services - How do I automatically terminate EC2 instances after a CFN update?
- r - Calculate coordinates of a point based on sine/cosine
- javascript - 如何在前端指定下载文件名
- c++ - boost asio open more that one socket