IBM Support

LI78466: EXCEPTION NOT CAUGHT WITH INLINING ENABLED

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When optimization with inlining is used, an exception thrown
    within a function (with no try/catch), is not caught by it's
    caller function's try/catch block.  The exception is, instead,
    cascaded back one more caller level, to the caller's caller
    try/catch block.
    
    
    
       === EXAMPLE ===
    
    void throw_here()
    {
     throw MyException();
    }
    
    void should_catch_here()
    {
     try
     {
      switch (some_val)
       {
       case 1:  return 0;
       case 2:  throw_here(); break;
      }
     }
     catch (MyException& m)
     {
      // Exception should be caught here
     }
    }
    
    int main()
    {
     try {   should_catch_here();   }
     catch(...)
     {
      // Exception is caught here instead when INLINE is used
     }
    }
    
    Note:  Test example is not compilable
    

Local fix

  • Do not use inlining.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: All users of xlC++ compiler with             *
    *                 versions V2R1, V2R1M1.                       *
    ****************************************************************
    * PROBLEM DESCRIPTION: When inlining a function, switch        *
    *                      statement cases' exception state        *
    *                      corrupts downstream switch case state   *
    *                      for the purpose of state merge of       *
    *                      inlined function.                       *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    

Problem conclusion

  • Apply provided service.
    

Temporary fix

Comments

APAR Information

  • APAR number

    LI78466

  • Reported component name

    XL C/C++ FOR LI

  • Reported component ID

    5725C7300

  • Reported release

    D10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2015-02-25

  • Closed date

    2015-02-25

  • Last modified date

    2015-02-25

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

    PI24418

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

Modules/Macros

  • CCNEPP
    

Fix information

  • Fixed component name

    XL C/C++ FOR LI

  • Fixed component ID

    5725C7300

Applicable component levels

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

Document Information

Modified date:
17 October 2021