Fixes are available
November 2011 PTF for XL C/C++ for AIX, V11.1
January 2012 PTF for XL C/C++ for AIX, V11.1
April 2012 PTF for XL C/C++ for AIX, V11.1
July 2012 PTF for XL C/C++ for AIX, V11.1
October 2012 PTF for XL C/C++ for AIX, V11.1
February 2013 PTF for XL C/C++ for AIX, V11.1
XL C/C++ for AIX Fix Pack 14 (May 2013 PTF) for 11.1
XL C/C++ for AIX Fix Pack 15 (August 2013 PTF) for 11.1
XL C/C++ for AIX Fix Pack 16 (November 2013 PTF) for 11.1
XL C/C++ for AIX Fix Pack 17 (February 2014 PTF) for 11.1
XL C/C++ for AIX Fix Pack 18 (May 2014 PTF) for 11.1
XL C/C++ for AIX Fix Pack 19 (August 2014 PTF) for 11.1
XL C/C++ for AIX Fix Pack 20 (November 2014 PTF) for 11.1
XL C/C++ for AIX Fix Pack 21 (April 2015 PTF) for 11.1
XL C/C++ for AIX Fix Pack 22 (September 2015 PTF) for 11.1
XL C/C++ for AIX Fix Pack 23 (March 2016 PTF) for 11.1
XL C/C++ for AIX Fix Pack 24 (September 2016 PTF) for 11.1
APAR status
Closed as program error.
Error description
Compiling the following template test case results in fatal error. $cat xlc_crash.cxx #include <inttypes.h> #include <string> #include <iostream> #include <vector> class DocumentsWriter { private: class ByteBlockPool; class CharBlockPool; class FieldMergeState; template<typename T> class BlockPool { protected: bool trackAllocations; int32_t numBuffer; int32_t bufferUpto; // Which buffer we are upto int32_t blockSize; DocumentsWriter* parent; public: int32_t tOffset; // Current head offset int32_t tUpto; // Where we are in head buffer T* buffer; // Current head buffer virtual T* getNewBlock(bool trackAllocations) = 0; BlockPool(DocumentsWriter* _parent, int32_t _blockSize, bool trackAllocations) { this->blockSize = _blockSize; this->parent = _parent; bufferUpto = -1; tUpto = blockSize; tOffset = -blockSize; buffer = NULL; numBuffer = 0; this->trackAllocations = trackAllocations; buffer = NULL; } virtual ~BlockPool(){ } virtual void reset() = 0; void nextBuffer() { } friend class DocumentsWriter; }; class CharBlockPool: public BlockPool<char>{ public: CharBlockPool(DocumentsWriter* _parent); virtual ~CharBlockPool(); char* getNewBlock(bool trackAllocations); void reset(); friend class DocumentsWriter::FieldMergeState; }; class ByteBlockPool: public BlockPool<uint8_t>{ public: ByteBlockPool( bool _trackAllocations, DocumentsWriter* _parent); virtual ~ByteBlockPool(); uint8_t* getNewBlock(bool trackAllocations); int32_t newSlice(const int32_t size); int32_t allocSlice(uint8_t* slice, const int32_t upto); void reset(); }; }; ===== ACTUAL OUTPUT: $xlC xlc_crash.cxx -c 1501-224 (S) fatal error in <path_to_compiler_binary>/exe/xlCentry: signal 11 received
Local fix
N/A
Problem summary
PROBLEM DESCRIPTION: An internal error may be generated with some uses of member template classes due to an invalid query. USERS AFFECTED: The problem would affect only users of member template classes.
Problem conclusion
Problem is fixed. Apply applicable service.
Temporary fix
Comments
APAR Information
APAR number
IV10077
Reported component name
XL C/C++ AIX
Reported component ID
5724X1300
Reported release
B10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2011-11-02
Closed date
2011-11-02
Last modified date
2011-11-03
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
XL C/C++ AIX
Fixed component ID
5724X1300
Applicable component levels
RB10 PSN U848679
UP06/09/13 C
Document Information
Modified date:
03 November 2011