Skip to main content

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

Copyright and trademark information

IBM, the IBM logo and ibm.com are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at www.ibm.com/legal/copytrade.shtml.

Rate this page:


(0 users)Average rating

Add comments

Document information

XL C/C++ for AIX

Compiler


Software version:
12.1


Reference #:
IV37948


Modified date:
2013-03-13

Translate my page

Content navigation