From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28786 invoked by alias); 16 May 2010 05:13:07 -0000 Received: (qmail 28729 invoked by uid 48); 16 May 2010 05:12:50 -0000 Date: Sun, 16 May 2010 05:13:00 -0000 Subject: [Bug fortran/44155] New: gfortran segmentation fault using iso_c_binding X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "whalen at cray dot com" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2010-05/txt/msg01690.txt.bz2 gfortran encounters a segfault when trying to compile a standalone file. The source file itself appears at the end of this comment. But first, the gfortran behavior users/whalen> gfortran -v -save-temps test.f90 Driving: gfortran -v -save-temps test.f90 -lgfortran -lm -shared-libgcc Using built-in specs. COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=gcc/dev/20100515/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../../src/gcc-dev/configure --prefix=gcc/dev/20100515/ --with-gmp=gmp/4.3.2/ --with-mpfr=mpfr/2.4.2/ --with-mpc=mpc/0.8.1/ --with-ppl=ppl/0.10.2/ --with-cloog=cloog/0.15.9/ --enable-languages=fortran,c,c++ --enable-lto --with-libelf=libelf/0.8.13 Thread model: posix gcc version 4.6.0 20100516 (experimental) [trunk revision 159450] (GCC) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic' '-march=x86-64' gcc/dev/20100515/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/f951 test.f90 -quiet -dumpbase test.f90 -mtune=generic -march=x86-64 -auxbase test -version -fintrinsic-modules-path gcc/dev/20100515/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.6.0/finclude -o test.s GNU Fortran (GCC) version 4.6.0 20100516 (experimental) [trunk revision 159450] (x86_64-unknown-linux-gnu) compiled by GNU C version 4.6.0 20100516 (experimental) [trunk revision 159450], GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 GNU Fortran (GCC) version 4.6.0 20100516 (experimental) [trunk revision 159450] (x86_64-unknown-linux-gnu) compiled by GNU C version 4.6.0 20100516 (experimental) [trunk revision 159450], GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 test.f90: In function ‘tetgenf’: test.f90:125:0: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See for instructions. users/whalen> cat test.f90 module mod_tetgen use iso_c_binding implicit none type tetgenpolygon logical :: initialized = .false. integer :: numberofvertices = 0 integer, pointer :: vertexlist(:) end type tetgenpolygon type tetgenfacet logical :: initialized = .false. integer :: numberofpolygons = 0 type(tetgenpolygon), pointer :: polygonlist(:) integer :: numberofholes = 0 double precision, pointer :: holelist(:,:) end type tetgenfacet type tetgenio logical :: initialized = .false. integer :: handle = -1 integer :: numberofpoints = 0 double precision, pointer :: pointlist(:,:) integer :: numberoffacets = 0 type(tetgenfacet), pointer :: facetlist(:) integer, pointer :: facetmarkerlist(:) end type tetgenio interface subroutine tetcall & (inhandle, outhandle, numberofpoints, pointlist, & numberoffacets, numberofpolygons, numberofholes, & facetmarkerlist, vertexliststarts, vertexlistvals, & numberofoutpoints, outpointlist, numberofoutfacets) & bind(c) use iso_c_binding implicit none integer(c_int), value :: inhandle integer(c_int), value :: outhandle integer(c_int), value :: numberofpoints type(c_ptr), value :: pointlist integer(c_int), value :: numberoffacets type(c_ptr), value :: numberofpolygons type(c_ptr), value :: numberofholes type(c_ptr), value :: facetmarkerlist type(c_ptr), value :: vertexliststarts, vertexlistvals integer(c_int) :: numberofoutpoints type(c_ptr) :: outpointlist integer(c_int) :: numberofoutfacets end subroutine tetcall end interface contains subroutine tetgenf( in, out ) implicit none !-- Transferred variables type(tetgenio), target, intent(in) :: in type(tetgenio), target, intent(inout) :: out !-- Local variables integer ppos, vpos integer f, p, v type(tetgenfacet), pointer :: pfacet type(tetgenpolygon), pointer :: ppoly integer, allocatable, target :: npolylist(:), nholelist(:) integer, allocatable, target :: vertexliststarts(:), vertexlistvals(:) integer inhandle, outhandle type(c_ptr) c_outpointlist allocate(npolylist(in%numberoffacets)) allocate(nholelist(in%numberoffacets)) ppos = 1 vpos = 1 do f = 1, in%numberoffacets pfacet => in%facetlist(f) do p = 1, pfacet%numberofpolygons ppoly => pfacet%polygonlist(p) do v = 1, ppoly%numberofvertices vpos = vpos + 1 end do ppos = ppos + 1 end do end do allocate(vertexliststarts(ppos), vertexlistvals(vpos-1)) ppos = 1 vpos = 1 do f = 1, in%numberoffacets pfacet => in%facetlist(f) npolylist(f) = pfacet%numberofpolygons nholelist(f) = pfacet%numberofholes do p = 1, pfacet%numberofpolygons vertexliststarts(ppos) = vpos ppoly => pfacet%polygonlist(p) do v = 1, ppoly%numberofvertices vertexlistvals(vpos) = ppoly%vertexlist(v) vpos = vpos + 1 end do ppos = ppos + 1 end do end do vertexliststarts(ppos) = vpos call tetnew(inhandle) call tetnew(outhandle) call tetcall(inhandle, outhandle, & in%numberofpoints, & c_loc(in%pointlist), & in%numberoffacets, & c_loc(npolylist), & c_loc(nholelist), & c_loc(in%facetmarkerlist), & c_loc(vertexliststarts), c_loc(vertexlistvals), & out%numberofpoints, c_outpointlist, & out%numberoffacets) call tetfree(inhandle) out%initialized = .true. out%handle = outhandle call c_f_pointer(cptr=c_outpointlist, fptr=out%pointlist, & shape=(/ 3, out%numberofpoints /)) deallocate(vertexliststarts, vertexlistvals) deallocate(npolylist, nholelist) end subroutine tetgenf end module mod_tetgen -- Summary: gfortran segmentation fault using iso_c_binding Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: whalen at cray dot com GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44155