IBM Support

LI77445: INLINED GETLINE() CAUSING INVALID EXCEPTION

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When enabling function inlining via -Q or -qinline, the
    inline version of the getline(basic_istream&, basic_string&)
    function from the <string> standard header may be inlined,
    causing invalid exception handling for any subsequent exceptions
    that are thrown.
    
    
    template<class _E, class _Tr, class _A> inline
        basic_istream<_E, _Tr>& getline(basic_istream<_E, _Tr>& _I,
                    basic_string<_E, _Tr, _A>& _X)
            {return (getline(_I, _X, _I.widen('\n'))); }
    
    
    The stack trace may look like:
    
    IOT/Abort trap in raise.raise at 0xd02c2904
    0xd02c2904 (raise+0x40) 80410014         lwz   r2,0x14(r1)
    
    raise.raise(??) at 0xd02c2904
    abort() at 0xd0326778
    std::myabort()() at 0xd091330c
    std::terminate()() at 0xd091286c
    exceptio.std::terminate().terminate()() at 0xd091278c
    __DoThrowV6() at 0xd09151e8
    main(0x1, 0x2ff21994) at 0x10006cf0
    

Local fix

  • Use the non-inline version of the function, by specifying the
    getline() delim parameter, i.e.  getline(inf, line, '\n');
    
    
    template<class _E, class _Tr, class _A>
        basic_istream<_E, _Tr>& getline(basic_istream<_E, _Tr>& _I,
                    basic_string<_E, _Tr, _A>& _X, const _E _D);
    

Problem summary

  • PROBLEM DESCRIPTION:
    Exception catch handler is missed after inlining is performed.
    
    USERS AFFECTED:
    The problem may be exposed when functions called from a try
    block are inlined after a block inside the try block with a
    return statement.   There are cases where the try block could
    be missed.
    

Problem conclusion

  • The problem has been resolved.
    

Temporary fix

Comments

APAR Information

  • APAR number

    LI77445

  • Reported component name

    XL C/C++ FOR LI

  • Reported component ID

    5724X1400

  • Reported release

    B10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2013-06-11

  • Closed date

    2013-06-11

  • Last modified date

    2013-06-11

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

    IV30898

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

Fix information

  • Fixed component name

    XL C/C++ FOR LI

  • Fixed component ID

    5724X1400

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":"B10","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
14 October 2021