Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

'var$2004' is being used without being defined

SCHWOERTZIG_T_
Beginner
574 Views

Hi all,

I am encountering a strange message related to run time check.
I compiled with ifort 12.1.3.293 build 20120212 on linux64 with following options : -g -O0 -fp-model precise -openmp  -Dmkl -ftz -extend-source -DFCCI -check uninit -fpe0 -ftrapuv  -traceback -lefence

Running my program leads to :

forrtl: severe (193): Run-Time Check Failure. The variable 'mysource_$ICUT' is being used without being defined
Image              PC                Routine            Line        Source             
e_mainline_linux6  0000000003B9E426  mysource_                  371  mysource.F

Line 371 is a ENDDO statement. ICUT is clearly defined with this DO/ENDDO block :
344 : DO ICUT=1,NBCUT
...
371 :  ENDDO ! next ICUT

Seting ICUT=0 at the begining of the subroutine leads to :

forrtl: severe (193): Run-Time Check Failure. The variable 'var$2004' is being used without being defined
Image              PC                Routine            Line        Source             
e_mainline_linux6  0000000003B9E426  mysource_                  371  mysource.F

But String "2004" does not occur in any source file.

Thanks for any help.
Thierry

 

0 Kudos
4 Replies
Kevin_D_Intel
Employee
574 Views

We have received other reports of this type of error and compiler confusion in the past that were fixed in more current releases. Your case appears to be a defect. The 12.1 is rather old release.

If you can post a complete reproducer I can verify the error and whether this has already been fixed in a newer release.

0 Kudos
SCHWOERTZIG_T_
Beginner
574 Views

Kevin Davis (Intel) wrote:

If you can post a complete reproducer I can verify the error and whether this has already been fixed in a newer release.

In fact it seems related to a segmentation fault. Using modules leads to "-uninit" issue instead of SIGSEGV signal.
I was able to reproduce with the attached source file.

Compilation command is :
ifort source.F -g -O0 -fp-model precise -openmp  -Dmkl -ftz -extend-source -DFCCI -check uninit -fpe0 -ftrapuv  -traceback -lefence

Execution leads to :

forrtl: severe (193): Run-Time Check Failure. The variable 'idst3$DIST_PCUT' is being used without being defined
Image              PC                Routine            Line        Source             
a.out              000000000040319A  defect_IP_idst3          31  source.F

Thierry

0 Kudos
Lorri_M_Intel
Employee
574 Views

In this particular cutdown program, I changed "check uninit" to "check bounds" and got a bounds violation.

Oh, and yes, it gave the seemingly-bogus uninitialized message with the latest 14.0 compiler too.

Anyway, if you look in the cutdown program, the do-loop variable I runs from 1->101, but the size of that dimension is only 100.

Would you please try the experiment with your original program, to change "check uninit" to "check bounds" ?

           thank you --

                              --Lorri

0 Kudos
jimdempseyatthecove
Honored Contributor III
574 Views

FWIW a variable that lies beyond the bounds of its dimension is also undefined. As to if this is trapped by the diagnostic code... probably a 50/50 proposition. As it would likely be using junk beyond the end of a flag table or looking for a special NaN.

Jim Dempsey

0 Kudos
Reply