Почему следующий код приводит к ошибке сегментации при компиляции с ifort
?
! testtrb.f90
program testtrb
call tracebackqq() ! This is for ifort
!call backtrace() ! This is for gfortran
print '(/1A/)', 'Finish.'
end program testtrb
Выполнив ifort testtrb.f90 ; ./a.out
, я получил
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
a.out 0000000000409FFA Unknown Unknown Unknown
libpthread-2.31.s 00007F6E2C9903C0 Unknown Unknown Unknown
a.out 000000000040746D Unknown Unknown Unknown
a.out 000000000040383B Unknown Unknown Unknown
a.out 00000000004037E2 Unknown Unknown Unknown
libc-2.31.so 00007F6E2C7B00B3 __libc_start_main Unknown Unknown
a.out 00000000004036EE Unknown Unknown Unknown
Возврат ifort --version
равен ifort (IFORT) 19.1.1.217 20200306
. Я также пробовал ifort (IFORT) 2021.1 Beta 20201112
, результат был аналогичным. Значение uname -r
равно 5.9.0-050900-generic
, если это полезно.
Однако, изменив tracebackqq
на backtrace
и запустив gfortran testtrb.f90 ; ./a.out
, я получаю
#0 0x7f789588ad3a
#1 0x557b8f35119d
#2 0x557b8f351254
#3 0x7f789569f0b2
#4 0x557b8f3510cd
#5 0xffffffffffffffff
Finish.
Это кажется правильным.
Так почему же tracebackqq
порождает SIGSEGV?
Любые комментарии или критика будут оценены. Спасибо.