Microsoft KB Archive/106725

= FIX: Alternate Return Compiled with /Ox Can GPF at Run Time =

PSS ID Number: 106725

Article Last Modified on 3/24/2000

-

The information in this article applies to:


 * Microsoft FORTRAN PowerStation for MS-DOS 1.0

-



This article was previously published under Q106725



SYMPTOMS
The FORTRAN PowerStation optimizer may generate incorrect code when compiling routines containing alternate returns. If routines containing alternate returns are compiled with /Ox, the following errors may occur at run time:

DOSXMSF : fatal error DX1020: unhandled exception: General

protection fault;

Fault occurred in a System Call



RESOLUTION
Altering code around the alternate return may alleviate this problem. If this doesn't work, then do not compile routines using alternate returns with /Ox. Note that other routines in the program can still be optimized.



STATUS
Microsoft has confirmed this to be a problem in FORTRAN PowerStation version 1.0 for MS-DOS. This problem has been resolved with FORTRAN PowerStation maintenance release version 1.0A for MS-DOS.



MORE INFORMATION
To duplicate the error, compile the sample code with /Ox and then run the program to get the DX1020 error. This problem is dependent on the surrounding code. Replacing "var=1.0" with "continue", or commenting out "goto 10" in the sample below removes the problem:

FORTRAN PowerStation version 1.0 can be differentiated from the maintenance release version 1.0A by invoking the linker. Typing link32 | more from /F32/BIN directory will show version 2.8 for FORTRAN Powerstation maintenance release version 1.0A for MS-DOS."

Sample Code
call test(*10,*20) 10 var=1.0 20 if (var.ne.0) return goto 10 end

subroutine test(*,*) return 1 end

Additional query words: 1.00 GP fault gp-fault gpf buglist1.00 fixlist1.00A

Keywords: kbbug KB106725

Technology: kbAudDeveloper kbFORTRANPower100DOS kbFortranSearch kbZNotKeyword3

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© 2004 Microsoft Corporation. All rights reserved.