IV37948: 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

    IV37948

  • Reported component name

    XL C/C++ FOR AI

  • Reported component ID

    5725C7200

  • Reported release

    C10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2013-03-12

  • Closed date

    2013-03-12

  • Last modified date

    2013-03-13

  • 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 AI

  • Fixed component ID

    5725C7200

Applicable component levels

  • RC10 PSN U858524

       UP06/09/13 C



Rate this page:

(0 users)Average rating

Document information


More support for:

XL C/C++ for AIX
Compiler

Software version:

12.1

Reference #:

IV37948

Modified date:

2013-03-13

Translate my page

Machine Translation

Content navigation