------- Comment #5 from jv244 at cam dot ac dot uk 2009-06-03 16:47 ------- OK, now with easy testcase, as you'll notice from the output, the loop is important:
IMPLICIT NONE character(len=100) :: fmt1,str1,fmt2,str2 real*8 :: r(3)=0 integer :: i,iunit fmt1="(T2,A2," str1="a" iunit=6 DO i=1,10 write(iunit,TRIM(fmt1)//"1X,3F20.10)") TRIM(str1),r(1:3) ENDDO END yields with 4.4.1 under valgrind : > gfortran test.f90 ; valgrind --tool=memcheck ./a.out a 0.0000000000 0.0000000000 0.0000000000 ==666== ==666== Invalid read of size 1 ==666== at 0x4A22DF9: strncmp (mc_replace_strmem.c:314) ==666== by 0x4BD83AF: _gfortrani_parse_format (format.c:188) ==666== by 0x4BE4B4F: data_transfer_init (transfer.c:2106) ==666== by 0x400C75: MAIN__ (in /data03/vondele/bug/io/a.out) ==666== by 0x400D89: main (fmain.c:21) ==666== Address 0x55d9218 is 0 bytes inside a block of size 1,152 free'd ==666== at 0x4A2196E: free (vg_replace_malloc.c:323) ==666== by 0x400D31: MAIN__ (in /data03/vondele/bug/io/a.out) ==666== by 0x400D89: main (fmain.c:21) ==666== ==666== Invalid read of size 1 ==666== at 0x4A22E06: strncmp (mc_replace_strmem.c:314) ==666== by 0x4BD83AF: _gfortrani_parse_format (format.c:188) ==666== by 0x4BE4B4F: data_transfer_init (transfer.c:2106) ==666== by 0x400C75: MAIN__ (in /data03/vondele/bug/io/a.out) ==666== by 0x400D89: main (fmain.c:21) ==666== Address 0x55d9218 is 0 bytes inside a block of size 1,152 free'd ==666== at 0x4A2196E: free (vg_replace_malloc.c:323) ==666== by 0x400D31: MAIN__ (in /data03/vondele/bug/io/a.out) ==666== by 0x400D89: main (fmain.c:21) ==666== ==666== Invalid read of size 1 ==666== at 0x4A22E16: strncmp (mc_replace_strmem.c:314) ==666== by 0x4BD83AF: _gfortrani_parse_format (format.c:188) ==666== by 0x4BE4B4F: data_transfer_init (transfer.c:2106) ==666== by 0x400C75: MAIN__ (in /data03/vondele/bug/io/a.out) ==666== by 0x400D89: main (fmain.c:21) ==666== Address 0x55d9219 is 1 bytes inside a block of size 1,152 free'd ==666== at 0x4A2196E: free (vg_replace_malloc.c:323) ==666== by 0x400D31: MAIN__ (in /data03/vondele/bug/io/a.out) ==666== by 0x400D89: main (fmain.c:21) ==666== ==666== Invalid read of size 1 ==666== at 0x4A22E25: strncmp (mc_replace_strmem.c:314) ==666== by 0x4BD83AF: _gfortrani_parse_format (format.c:188) ==666== by 0x4BE4B4F: data_transfer_init (transfer.c:2106) ==666== by 0x400C75: MAIN__ (in /data03/vondele/bug/io/a.out) ==666== by 0x400D89: main (fmain.c:21) ==666== Address 0x55d9219 is 1 bytes inside a block of size 1,152 free'd ==666== at 0x4A2196E: free (vg_replace_malloc.c:323) ==666== by 0x400D31: MAIN__ (in /data03/vondele/bug/io/a.out) ==666== by 0x400D89: main (fmain.c:21) a 0.0000000000 0.0000000000 0.0000000000 a 0.0000000000 0.0000000000 0.0000000000 a 0.0000000000 0.0000000000 0.0000000000 a 0.0000000000 0.0000000000 0.0000000000 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40330