[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#700301: gfortran: Fails to assign slice to allocatable array of derived type



Package: gfortran
Version: 4:4.7.2-1
Severity: normal

Dear Maintainer,

The code below leads to segmentaion fault:

program allocatables

   implicit none

   integer, parameter :: CH_ = 4 
   type with_character
       character(kind=CH_)   :: Post = CH__" "
       integer                :: i = 0
   end type
   
   type with_string
       character(4, kind=CH_)   :: Post = CH__" "
       integer                :: i = 0
   end type

   type(with_character) :: CharList(10)
   type(with_string) :: StringList(10)
   type(with_character), allocatable :: CharAlloc(:)
   type(with_string), allocatable :: StringAlloc(:)

   CharAlloc%Post = CharList%Post
   CharAlloc = Pack(CharAlloc(2:), .true.) ! First segmentation fault.

   StringAlloc%Post = StringList%Post
   StringAlloc = Pack(StringList(2:), .true.) ! Second segmentation fault of another type.
end program allocatables

=========================
First segmentation fault:
 malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *)
 &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct
 malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size)
 >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk,
 >fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t)))
 >- 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end &
 >pagemask) == 0)' failed.

 Program received signal SIGABRT: Process abort signal.

 Backtrace for this error:

==========================
Second segmentation fault:

*** glibc detected *** ./lab_1_3.exe: free(): invalid next size
(normal): 0x00000000022690d0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x76d76)[0x2b7871151d76]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x6c)[0x2b7871156aac]
../lab_1_3.exe[0x400fa7]
../lab_1_3.exe[0x400ff3]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xfd)[0x2b78710f9ead]
../lab_1_3.exe[0x400969]
======= Memory map: ========
00400000-00402000 r-xp 00000000 08:02 1843005
/home/stanislav/tmp/lab_1_3/bin/lab_1_3.exe
00601000-00602000 rw-p 00001000 08:02 1843005
/home/stanislav/tmp/lab_1_3/bin/lab_1_3.exe
02266000-02287000 rw-p 00000000 00:00 0
[heap]
2b78704d5000-2b78704f5000 r-xp 00000000 08:01 1450064
/lib/x86_64-linux-gnu/ld-2.13.so
2b78704f5000-2b78704f7000 rw-p 00000000 00:00 0 
2b78706f4000-2b78706f5000 r--p 0001f000 08:01 1450064
/lib/x86_64-linux-gnu/ld-2.13.so
2b78706f5000-2b78706f6000 rw-p 00020000 08:01 1450064
/lib/x86_64-linux-gnu/ld-2.13.so
2b78706f6000-2b78706f7000 rw-p 00000000 00:00 0 
2b78706f7000-2b787080b000 r-xp 00000000 08:01 1308169
/usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
2b787080b000-2b7870a0b000 ---p 00114000 08:01 1308169
/usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
2b7870a0b000-2b7870a0d000 rw-p 00114000 08:01 1308169
/usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
2b7870a0d000-2b7870a8e000 r-xp 00000000 08:01 1450058
/lib/x86_64-linux-gnu/libm-2.13.so
2b7870a8e000-2b7870c8d000 ---p 00081000 08:01 1450058
/lib/x86_64-linux-gnu/libm-2.13.so
2b7870c8d000-2b7870c8e000 r--p 00080000 08:01 1450058
/lib/x86_64-linux-gnu/libm-2.13.so
2b7870c8e000-2b7870c8f000 rw-p 00081000 08:01 1450058
/lib/x86_64-linux-gnu/libm-2.13.so
2b7870c8f000-2b7870c90000 rw-p 00000000 00:00 0 
2b7870c90000-2b7870ca5000 r-xp 00000000 08:01 1439008
/lib/x86_64-linux-gnu/libgcc_s.so.1
2b7870ca5000-2b7870ea5000 ---p 00015000 08:01 1439008
/lib/x86_64-linux-gnu/libgcc_s.so.1
2b7870ea5000-2b7870ea6000 rw-p 00015000 08:01 1439008
/lib/x86_64-linux-gnu/libgcc_s.so.1
2b7870ea6000-2b7870edb000 r-xp 00000000 08:01 1311727
/usr/lib/x86_64-linux-gnu/libquadmath.so.0.0.0
2b7870edb000-2b78710da000 ---p 00035000 08:01 1311727
/usr/lib/x86_64-linux-gnu/libquadmath.so.0.0.0
2b78710da000-2b78710db000 rw-p 00034000 08:01 1311727
/usr/lib/x86_64-linux-gnu/libquadmath.so.0.0.0
2b78710db000-2b787125b000 r-xp 00000000 08:01 1450061
/lib/x86_64-linux-gnu/libc-2.13.so
2b787125b000-2b787145b000 ---p 00180000 08:01 1450061
/lib/x86_64-linux-gnu/libc-2.13.so
2b787145b000-2b787145f000 r--p 00180000 08:01 1450061
/lib/x86_64-linux-gnu/libc-2.13.so
2b787145f000-2b7871460000 rw-p 00184000 08:01 1450061
/lib/x86_64-linux-gnu/libc-2.13.so
2b7871460000-2b7871467000 rw-p 00000000 00:00 0 
2b7874000000-2b7874021000 rw-p 00000000 00:00 0 
2b7874021000-2b7878000000 ---p 00000000 00:00 0 
7fffa2f9d000-7fffa2fbe000 rw-p 00000000 00:00 0
[stack]
7fffa2fff000-7fffa3000000 r-xp 00000000 00:00 0
[vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[vsyscall]

Program received signal SIGABRT: Process abort signal.

Backtrace for this error:

================================

First error doesn't apears if CH_ = 1 in code.

-- System Information:
Debian Release: 6.0.6
  APT prefers stable
  APT policy: (990, 'stable'), (500, 'stable-updates'), (500, 'proposed-updates'), (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages gfortran depends on:
ii  cpp           4:4.7.2-1
ii  gcc           4:4.7.2-1
ii  gfortran-4.7  4.7.2-5

gfortran recommends no packages.

Versions of packages gfortran suggests:
ii  gfortran-doc       5:4
pn  gfortran-multilib  <none>

-- no debconf information


Reply to: