IBM Support

LI76787: SIGNAL 11 IN IPA64 AT -O3

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • IPA64 abends when compiling the following test case at -O3.
    
    ===== Compile Command:
    xlf90_r -q64 -qfixed=72 -O3 -qmaxmem=-1 -qdbg -qfullpath
    -qwarn64 -qstrict -qfloat=rrm:norsqrt:nofold -qreport
    -qflttrap=ov:zero:inv:imp:enable -qsigtrap -qsuppress=1501-245
    -qalias=intptr -qreport=smplist -qextname -qintsize=8
    -qrealsize=8 -qarch=pwr7 -qtune=pwr7 -qsimd=auto -qnocheck
    -qspillsize=32648 -qnoescape -qxflag=ngenstub
    -bmaxstack:0xF0000000 -qnoundef -qsmp=omp -qnosave
    -qtbtable=full -qxref -qattr -bnoquiet -bdatapsize:64K
    -bstackpsize:64K -btextpsize:64K -qsource -c mieint.F
    
    
    ===== Test case:
    $ cat mieint.F
    
          Subroutine MieInt(Dx, SCm, Inp, Dqv, Dqxt, Dqsc, Dbsc, Dg,
    Xs1,
         1                  Xs2, DPh, Error)
    
          Integer * 2  Imaxx
          Parameter (Imaxx = 12000)
          Real * 4     RIMax          ! largest real part of
    refractive inde
          Parameter (RIMax = 2.5)
          Real * 4     IRIMax         ! largest imaginary part of
    refractive
          Parameter (IRIMax = -2)
          Integer * 2  Itermax
          Parameter (Itermax = 12000 * 2.5)
                                    ! must be large enough to cope
    with the
                                    ! largest possible nmx = x *
    abs(scm) +
                                    ! or nmx =  Dx +
    4.05*Dx**(1./3.) + 2.0
          Integer * 2  Imaxnp
          Parameter (Imaxnp = 10000) ! Change this as required
    !     INPUT
          Real * 8     Dx
          Complex * 16  SCm
          Integer * 4  Inp
          Real * 8     Dqv(Inp)
    !     OUTPUT
          Complex * 16  Xs1(InP)
          Complex * 16  Xs2(InP)
          Real * 8     Dqxt
          Real * 8     Dqsc
          Real * 8     Dg
          Real * 8     Dbsc
          Real * 8     DPh(InP)
          Integer * 4  Error
    !     LOCAL
          Integer * 2  I
          Integer * 2  NStop
          Integer * 2  NmX
          Integer * 4  N    ! N*N > 32767 ie N > 181
          Integer * 4  Inp2
          Real * 8     Chi,Chi0,Chi1
          Real * 8     APsi,APsi0,APsi1
          Real * 8     Pi0(Imaxnp)
          Real * 8     Pi1(Imaxnp)
          Real * 8     Taun(Imaxnp)
          Real * 8     Psi,Psi0,Psi1
          Complex * 8  Ir
          Complex * 16 Cm
          Complex * 16 A,ANM1,APB
          Complex * 16 B,BNM1,AMB
          Complex * 16 D(Itermax)
          Complex * 16 Sp(Imaxnp)
          Complex * 16 Sm(Imaxnp)
          Complex * 16 Xi,Xi0,Xi1
          Complex * 16 Y
    !     ACCELERATOR VARIABLES
          Integer * 2  Tnp1
          Integer * 2  Tnm1
          Real * 8     Dn
          Real * 8     Rnx
          Real * 8     S(Imaxnp)
          Real * 8     T(Imaxnp)
          Real * 8     Turbo
          Real * 8     A2
          Complex * 16 A1
    
          If ((Dx.Gt.Imaxx) .Or. (InP.Gt.ImaxNP)) Then
            Error = 1
            Return
          EndIf
          Cm = SCm
          Ir = 1 / Cm
          Y =  Dx * Cm
          If (Dx.Lt.0.02) Then
             NStop = 2
          Else
             If (Dx.Le.8.0) Then
                NStop = Dx + 4.00*Dx**(1./3.) + 2.0
             Else
                If (Dx.Lt. 4200.0) Then
                   NStop = Dx + 4.05*Dx**(1./3.) + 2.0
                Else
                   NStop = Dx + 4.00*Dx**(1./3.) + 2.0
                End If
             End If
          End If
          NmX = Max(Real(NStop),Real(Abs(Y))) + 15.
          If (Nmx .gt. Itermax) then
              Error = 1
              Return
          End If
          Inp2 = Inp+1
          D(NmX) = Dcmplx(0,0)
          Do N = Nmx-1,1,-1
             A1 = (N+1) / Y
             D(N) = A1 - 1/(A1+D(N+1))
          End Do
          Do I =1,Inp2
             Sm(I) = Dcmplx(0,0)
             Sp(I) = Dcmplx(0,0)
             Pi0(I) = 0
             Pi1(I) = 1
          End Do
          Psi0 = Cos(Dx)
          Psi1 = Sin(Dx)
          Chi0 =-Sin(Dx)
          Chi1 = Cos(Dx)
          APsi0 = Psi0
          APsi1 = Psi1
          Xi0 = Dcmplx(APsi0,Chi0)
          Xi1 = Dcmplx(APsi1,Chi1)
          Dg = 0
          Dqsc = 0
          Dqxt = 0
          Tnp1 = 1
          Do N = 1,Nstop
             DN = N
             Tnp1 = Tnp1 + 2
             Tnm1 = Tnp1 - 2
             A2 = Tnp1 / (DN*(DN+1D0))
             Turbo = (DN+1D0) / DN
             Rnx = DN/Dx
             Psi = Dble(Tnm1)*Psi1/Dx - Psi0
             APsi = Psi
             Chi = Tnm1*Chi1/Dx       - Chi0
             Xi = Dcmplx(APsi,Chi)
             A = ((D(N)*Ir+Rnx)*APsi-APsi1) / ((D(N)*Ir+Rnx)*  Xi-
    Xi1)
             B = ((D(N)*Cm+Rnx)*APsi-APsi1) / ((D(N)*Cm+Rnx)*  Xi-
    Xi1)
             Dqxt = Tnp1 *      Dble(A + B)          + Dqxt
             Dqsc = Tnp1 * (A*Conjg(A) + B*Conjg(B)) + Dqsc
             If (N.Gt.1) then
                Dg = Dg + (dN*dN - 1) * Dble(ANM1*Conjg(A) + BNM1 *
         1           Conjg(B)) / dN + TNM1 * Dble(ANM1*Conjg(BNM1))
         2         / (dN*dN - dN)
             End If
             Anm1 = A
             Bnm1 = B
             APB = A2 * (A + B)
             AMB = A2 * (A - B)
             Do I = 1,Inp2
                If (I.GT.Inp) Then
                   S(I) = -Pi1(I)
                Else
                   S(I) = Dqv(I) * Pi1(I)
                End If
                T(I) = S(I) - Pi0(I)
                Taun(I) = N*T(I) - Pi0(I)
                Sp(I) = APB * (Pi1(I) + Taun(I)) + Sp(I)
                Sm(I) = AMB * (Pi1(I) - Taun(I)) + Sm(I)
                Pi0(I) = Pi1(I)
                Pi1(I) = S(I) + T(I)*Turbo
             End Do
             Psi0 = Psi1
             Psi1 = Psi
             Apsi1 = Psi1
             Chi0 = Chi1
             Chi1 = Chi
             Xi1 = Dcmplx(APsi1,Chi1)
          End Do
          If (Dg .GT.0) Dg = 2 * Dg / Dqsc
          Dqsc =  2 * Dqsc / Dx**2
          Dqxt =  2 * Dqxt / Dx**2
          Do I = 1,Inp
             Xs1(I) = (Sp(I)+Sm(I)) / 2
             Xs2(I) = (Sp(I)-Sm(I)) / 2
             Dph(I) = 2 * Dble(Xs1(I)*Conjg(Xs1(I)) +
    Xs2(I)*Conjg(Xs2(I)))
         1          / (Dx**2 * Dqsc)
          End Do
          Dbsc = 4 * Abs(( (Sp(Inp2)+Sm(Inp2))/2 )**2) / Dx**2
          Error = 0
          Return
          End subroutine MieInt
    $
    
    ===== ACTUAL OUTPUT:
    $xlf90_r -q64 -qfixed=72 -O3 -qmaxmem=-1 -qdbg -qfullpath
    -qwarn64 -qstrict -qfloat=rrm:norsqrt:nofold -qreport
    -qflttrap=ov:zero:inv:imp:enable -qsigtrap -qsuppress=1501-245
    -qalias=intptr -qreport=smplist -qextname -qintsize=8
    -qrealsize=8 -qarch=pwr7 -qtune=pwr7 -qsimd=auto -qnocheck
    -qspillsize=32648 -qnoescape -qxflag=ngenstub
    -bmaxstack:0xF0000000 -qnoundef -qsmp=omp -qnosave
    -qtbtable=full -qxref -qattr -bnoquiet -bdatapsize:64K
    -bstackpsize:64K -btextpsize:64K -qsource -c mieint.F
    ** mieint   === End of Compilation 1 ===
    The assert subroutine failed: lit_len <= 8 || (lit_len == 16 &&
    dt == DT_COMPLEX), file literal.cpp, line 2738
    Calling signal handler...
    1586-494 (U) INTERNAL COMPILER ERROR: Signal 6.
    /gsa/tlbgsa/projects/x/xlcmpbld/run/xlf/131/aix/solution/111020/
    usr/bin/.orig/xlf90_r: 1501-230 (S) Internal compiler error;
    please contact your Service Representative. For more information
    visit:
    http://www.ibm.com/support/docview.wss?uid=swg21110810
    1501-511  Compilation failed for file mieint.F.
    $
    
    
    ===== EXPECTED OUTPUT:
    Should compile clean
    

Local fix

  • Use -O2 instead of -O3.
    

Problem summary

  • USERS AFFECTED:
    XL Fortran users using O3 and up may potentially be affected by
    this issue.
    
    PROBLEM DESCRIPTION:
    A specific internal representation of literals was not designed
    to be supported in certain scenarios.
    

Problem conclusion

  • The specific internal representation of literals is now
    supported via this fix.
    

Temporary fix

Comments

APAR Information

  • APAR number

    LI76787

  • Reported component name

    XL FORTRAN LINU

  • Reported component ID

    5724X1600

  • Reported release

    D10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2012-05-23

  • Closed date

    2012-05-23

  • Last modified date

    2012-05-23

  • APAR is sysrouted FROM one or more of the following:

    IV13177

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    XL FORTRAN LINU

  • Fixed component ID

    5724X1600

Applicable component levels

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSAT4T","label":"XL Fortran for Linux"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"D10","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
17 October 2021