[Bug fortran/41408] New: Segmentation fault calling DGETRF from gfortran
lanceb at ksu dot edu
gcc-bugzilla@gcc.gnu.org
Sat Sep 19 13:45:00 GMT 2009
I get a segmentation fault while calling LAPACK function DGETRF. The same
program works the way it is supposed to (ie runs without error and gives the
expected output) using either g95 or Sun Studio.
I am running 32-bit Ubuntu 9.04. I've confirmed the error on a Slackware 12.1
box as well, and also in the latest development release (downloaded from the
link on the gfortran wiki).
$ gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.3.3-5ubuntu4'
--with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared
--with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3
--program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug
--enable-objc-gc --enable-mpfr --enable-targets=all --with-tune=generic
--enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu
--target=i486-linux-gnu
Thread model: posix
gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4)
A code sample that will replicate the bug is
program det_test
implicit none
integer, parameter :: p15=selected_real_kind(15)
real(p15) :: A(2,2)
integer :: info
A(1,1) = 1.0
A(1,2) = 0.0
A(2,1) = 3.0
A(2,2) = 0.5
info = 1
call DGETRF(2,2,A,2,2,info)
write(*,*) A(1,1)
write(*,*) A(1,2)
write(*,*) A(2,1)
write(*,*) A(2,2)
end program det_test
I saved the file as 'dettest.f95' and compiled using
gfortran -save-temps dettest.f95 -o dettest -L/usr/lib -llapack -lblas
The compiler gave no output. Running the executable, the only output is
"Segmentation Fault".
dettest.s file output:
.file "dettest.f95"
.section .rodata
.align 4
.type options.0.543, @object
.size options.0.543, 28
options.0.543:
.long 68
.long 127
.long 0
.long 0
.long 0
.long 1
.long 0
.align 4
.LC4:
.long 2
.LC5:
.string "dettest.f95"
.text
.globl MAIN__
.type MAIN__, @function
MAIN__:
pushl %ebp
movl %esp, %ebp
subl $344, %esp
movl $options.0.543, 4(%esp)
movl $7, (%esp)
call _gfortran_set_options
fld1
fstpl -40(%ebp)
fldz
fstpl -24(%ebp)
fldl .LC2
fstpl -32(%ebp)
fldl .LC3
fstpl -16(%ebp)
movl $1, -4(%ebp)
leal -4(%ebp), %eax
movl %eax, 20(%esp)
movl $.LC4, 16(%esp)
movl $.LC4, 12(%esp)
leal -40(%ebp), %eax
movl %eax, 8(%esp)
movl $.LC4, 4(%esp)
movl $.LC4, (%esp)
call dgetrf_
movl $.LC5, -308(%ebp)
movl $12, -304(%ebp)
movl $128, -316(%ebp)
movl $6, -312(%ebp)
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_st_write
movl $8, 8(%esp)
leal -40(%ebp), %eax
movl %eax, 4(%esp)
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_transfer_real
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_st_write_done
movl $.LC5, -308(%ebp)
movl $13, -304(%ebp)
movl $128, -316(%ebp)
movl $6, -312(%ebp)
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_st_write
movl $8, 8(%esp)
leal -40(%ebp), %eax
addl $16, %eax
movl %eax, 4(%esp)
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_transfer_real
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_st_write_done
movl $.LC5, -308(%ebp)
movl $14, -304(%ebp)
movl $128, -316(%ebp)
movl $6, -312(%ebp)
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_st_write
movl $8, 8(%esp)
leal -40(%ebp), %eax
addl $8, %eax
movl %eax, 4(%esp)
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_transfer_real
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_st_write_done
movl $.LC5, -308(%ebp)
movl $15, -304(%ebp)
movl $128, -316(%ebp)
movl $6, -312(%ebp)
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_st_write
movl $8, 8(%esp)
leal -40(%ebp), %eax
addl $24, %eax
movl %eax, 4(%esp)
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_transfer_real
leal -316(%ebp), %eax
movl %eax, (%esp)
call _gfortran_st_write_done
leave
ret
.size MAIN__, .-MAIN__
.section .rodata
.align 8
.LC2:
.long 0
.long 1074266112
.align 8
.LC3:
.long 0
.long 1071644672
.ident "GCC: (Ubuntu 4.3.3-5ubuntu4) 4.3.3"
.section .note.GNU-stack,"",@progbits
--
Summary: Segmentation fault calling DGETRF from gfortran
Product: gcc
Version: 4.3.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: lanceb at ksu dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41408
More information about the Gcc-bugs
mailing list