Fixes are available
XL C/C++ for Linux Fix Pack 8 (October 2015 Update) for 12.1
XL C/C++ for Linux Fix Pack 4 (October 2013 Update) for 12.1
XL C/C++ for Linux Fix Pack 5 (December 2013 Update) for 12.1
XL C/C++ for Linux Fix Pack 6 (February 2014 Update) for 12.1
XL C/C++ for Linux Fix Pack 7 (May 2014 Update) for 12.1
APAR status
Closed as program error.
Error description
When { } scope limit braces on line 1 and line 10 are added in the code block below, the program segfaults at runtime with violation inside that block of code. {// limit scope, line 1 // get remote velocities and store in state. unsigned nRemoteEvents = parms->lrList.size; unsigned rList[nRemoteEvents]; //----> segfault here RemoteData vRemote[nRemoteEvents]; ....... } // limit scope, line 10 If the limit scope braces on line 1 and line 10 are commented, the recompiled program will run successfully. The scope limit shall not affect semantics. The compiler is handling the variables inside it incorrectly. Below is reduced test case: void foo(int n) { for (int i=0; i<100; i++) { } { // extra scope delimiter unsigned vla[n]; printf("foo: %d\n", n); } // extra scope delimiter } int main() { int m=0; printf("main: len=%d\n", m); foo(m); } xlc t.c $./a.out main: len=0 Segmentation fault(coredump)
Local fix
Remove the scope limit braces.
Problem summary
PROBLEM DESCRIPTION: incorrect code gen variable length array with zero size USERS AFFECTED: any use of VLA that may have zero length
Problem conclusion
code generation is correct to properly handle VLA with zero length.
Temporary fix
Comments
APAR Information
APAR number
LI77614
Reported component name
XL C/C++ FOR LI
Reported component ID
5725C7300
Reported release
C10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2013-10-28
Closed date
2013-10-28
Last modified date
2013-10-28
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++ FOR LI
Fixed component ID
5725C7300
Applicable component levels
RC10 PSN LI77209
UP06/09/13
[{"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":"12.1","Line of Business":{"code":"LOB57","label":"Power"}}]
Document Information
Modified date:
14 October 2021