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

Bug#700301: marked as done (gfortran: Fails to assign slice to allocatable array of derived type)



Your message dated Wed, 16 Jul 2014 22:33:31 +0200
with message-id <53C6E19B.2030205@net-b.de>
and subject line Re: Bug#700301: gfortran: Fails to assign slice to allocatable array of derived type
has caused the Debian Bug report #700301,
regarding gfortran: Fails to assign slice to allocatable array of derived type
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
700301: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=700301
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
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

--- End Message ---
--- Begin Message ---
Stanislav Fyodorov wrote:
The code below leads to segmentaion fault:
[...]
    type(with_character) :: CharList(10)
    type(with_string) :: StringList(10)
    type(with_character), allocatable :: CharAlloc(:)
    type(with_string), allocatable :: StringAlloc(:)

    CharAlloc%Post = CharList%Post
[...]
    StringAlloc%Post = StringList%Post
    StringAlloc = Pack(StringList(2:), .true.) ! Second segmentation fault of another type.

The assignment "CharAlloc%Post =" is invalid as "CharAlloc" hasn't been allocated. Ditto for "StringAlloc%Post =".

Solution: Either (manually) allocate "CharAlloc" before the assignment – or assign to "CharAlloc" instead of to "CharAlloc%Post", i.e. use "CharAlloc = CharList" instead.

If I remove the "%Post" from the two assignments, it works here with both GCC 4.8.1 and GCC 4.10; I don't have GCC 4.7 at hand. (GCC 4.7 is also be no longer supported.)

Thus, after fixing the INVALID test case, it WORKS FOR ME.

Tobias

--- End Message ---

Reply to: