> I find that both nf.f90 and capacita.f90 segfault in runtime for any stack > size.
On x86_64-apple-darwin10, nf.f90 "works". However if I run it through valgrind I get ==64815== Memcheck, a memory error detector ==64815== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==64815== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info ==64815== Command: a.out --max-stackframe=2118496 ==64815== ==64815== Warning: set address range perms: large range [0x7ffe6c000000, 0x7fff5bc01000) (defined) ==64815== Warning: client switching stacks? SP change: 0x7fff5bffe410 --> 0x7fff5be0cef0 ==64815== to suppress, use: --max-stackframe=2037024 or greater ==64815== Invalid write of size 8 ==64815== at 0x100003B22: nf2dprecon.1828 (nf.f90:262) ==64815== by 0x10000C3B6: nfcg_ (nf.f90:279) ==64815== by 0x3FEFFFFFFFFFFFFF: ??? ==64815== by 0x3FEFFFFFFFFFFFFF: ??? ==64815== Address 0x7fff5be0cee8 is on thread 1's stack ==64815== ==64815== Invalid read of size 8 ==64815== at 0x100001296: trisolve.1839 (nf.f90:238) ==64815== by 0x10000C3B6: nfcg_ (nf.f90:279) ==64815== by 0x3FEFFFFFFFFFFFFF: ??? ==64815== by 0x3FEFFFFFFFFFFFFF: ??? ==64815== Address 0x7fff5be0cee8 is on thread 1's stack ==64815== ... ==64815== Invalid write of size 8 ==64815== at 0x100000F38: trisolve.1839 (nf.f90:231) ==64815== by 0x10000C3B6: nfcg_ (nf.f90:279) ==64815== by 0x3FEFFFFFFFFFFFFF: ??? ==64815== by 0x3FEFFFFFFFFFFFFF: ??? ==64815== Address 0x7fff5bffdde8 is on thread 1's stack ==64815== ==64815== Invalid read of size 8 ==64815== at 0x100000F64: trisolve.1839 (nf.f90:233) ==64815== by 0xC02396760B69D62B: ??? ==64815== by 0xC02396760B69D62C: ??? ==64815== by 0xC02396760B69D62D: ??? ==64815== by 0xC02396760B69D62D: ??? ==64815== by 0xC02396760B69D62D: ??? ==64815== by 0xC02396760B69D62D: ??? ==64815== by 0xC02396760B69D62D: ??? ==64815== by 0xC02396760B69D62D: ??? ==64815== by 0xC02396760B69D62B: ??? ==64815== by 0xC02396760B69D62B: ??? ==64815== by 0xC02396760B69D62B: ??? ==64815== Address 0x7fff5bffdde8 is on thread 1's stack ==64815== ... Time for setup 1.316 Time per iteration 3.250 Total Time 144.295 ==64815== ==64815== HEAP SUMMARY: ==64815== in use at exit: 656 bytes in 13 blocks ==64815== total heap usage: 411 allocs, 398 frees, 387,314,592 bytes allocated ==64815== ==64815== LEAK SUMMARY: ==64815== definitely lost: 0 bytes in 0 blocks ==64815== indirectly lost: 0 bytes in 0 blocks ==64815== possibly lost: 0 bytes in 0 blocks ==64815== still reachable: 656 bytes in 13 blocks ==64815== suppressed: 0 bytes in 0 blocks ==64815== Rerun with --leak-check=full to see details of leaked memory ==64815== ==64815== For counts of detected and suppressed errors, rerun with: -v ==64815== ERROR SUMMARY: 40050 errors from 1000 contexts (suppressed: 0 from 0) The segfault for capacita.f90 occurs in the subroutine fourir at the line write(unit=*, fmt=*) "error in fourier: n=", ntot AFAICT the problem occurs in the loop do m=1,ntot/4-1 E(m) = exp(m*h) end do If I print ntot, loc(ntot) before it I get 2048 140734799794712 After the loop loc(ntot) is 9205357642636066816 and any attemp to print its values yields a segfault. Dominique