Fortran - Insifficient memory

Fortran - Insifficient memory

I am getting critical errors with weight 100 for allocating an array with zero size.

example:

allocatable a(:)
 allocate(a(0))
 end

P1: Critical: Insufficient memory
zeroarray.f90(2): error #12138: size of allocated memory (0 bytes) is smaller than required to hold the object "A[]" (4 bytes)
 Problem P1.1: Insufficient memory: New
zeroarray.f90(2): error #12138: size of allocated memory (0 bytes) is smaller than required to hold the object "A[]" (4 bytes)
 X1: Allocation site: /home/lada/f/testy/intel/zeroarray.f90(2): Function MAIN_
 Code snippet:
 1 allocatable a(:)
 >2 allocate(a(0))
 3 end
 4
Stack (1 of 1 instance(s))
 >Unknown!MAIN_ - /home/lada/f/testy/intel/zeroarray.f90:2

I believe this usage of allocatable arrays is completely legitimate.

publicaciones de 4 / 0 nuevos
Último envío
Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.

I cannot reproduce this issue. My example: peter.f90

program peter
allocatable a(:)
allocate(a(0))
print*, "Hello world!"
end

# ifort -g peter.f90 -o peter
# inspxe-cl -collect mi3 -- ./peter
Used suppression file(s):
Hello world!

1 new problem(s) found
1 Memory not deallocated problem(s) detected

# inspxe-cl -report problems
Used suppression file(s):
P1: Warning: Memory not deallocated
Problem P1.3: Memory not deallocated: Not fixed
/home/peter/problem_report/peter.f90(3): Warning X3: Allocation site: Function peter: Module /home/peter/problem_report/peter

This is only a warning message, can be ignored - when Fortran program exits, it will call "garbage collector" to discard collected a.

Not sure if we used same compiler version, and inspector XE version.

# ifort --version
ifort (IFORT) 13.0.1 20121010
Copyright (C) 1985-2012 Intel Corporation. All rights reserved.
# inspxe-cl -version
Intel(R) Inspector XE 2013 Update 3 (build 259694) Command Line tool
Copyright (C) 2009-2012 Intel Corporation. All rights reserved.

This issue is with static analysis, not dynamic analysis

To reproduce the problem, compile with (windows syntax): ifort -Qdiag-enable:sc-full peter.f90

This is likely a problem with the static analysis code. Zero-sized array allocations are legal in Fortran. (Although access to any element of the array will result in a runtime error)

Thanks Mark. I also can reproduce this problem on Linux by using SSA.

# ifort -g -diag-enable sv3 peter.f90
ifort: command line remark #10010: option '-diag-enable sv3' is deprecated and will be removed in a future release. See '-help deprecated'
ifort: remark #10336: Static analysis complete; results available in "./r000sc/r000sc.inspxe"

# inspxe-cl -report problem -r r000sc
Used suppression file(s):
...
P1: Critical: Insufficient memory
peter.f90(3): error #12138: size of allocated memory (0 bytes) is smaller than required to hold the object "A[]" (4 bytes)
Problem P1.1: Insufficient memory: New
peter.f90(3): error #12138: size of allocated memory (0 bytes) is smaller than required to hold the object "A[]" (4 bytes)
X1: Allocation site: /home/peter/problem_report/peter.f90(3): Function MAIN_

I have reported this problem to engineering team. I will update on this thread, if any progress.
Temporarily please ignore such problem report, sorry for any inconvenience caused.

Deje un comentario

Por favor inicie sesión para agregar un comentario. ¿No es socio? Únase ya