Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
4.2.1
-
None
-
AIX 5.3 PowerPC IBM XLC++ 9.0
AIX 5.3 PowerPC IBM XLC++ 8.0
AIX 5.3 PowerPC IBM XLC++ 7.0
-
Regression
-
Incorrect Behavior
Description
On AIX, when compiled with XLC++, the test 22.locale.time.get.cpp fails with a SIGSEGV in all build types.
This is the stack dump at the time of the crash.
Segmentation fault in __xisdigit at 0xd033cc00 0xd033cc00 (__xisdigit+0x14) 80a30000 lwz r5,0x0(r3) (dbx) where __xisdigit(0x5b5b0000, 0x58) at 0xd033cc00 doformat(??, ??, ??, ??, ??, ??, ??, ??) at 0xd0338660 __strftime_std(??, ??, ??, ??, ??, ??, ??, ??) at 0xd0338464 strftime(??, ??, ??, ??) at 0xd0341c48 unnamed block in void test_english<char>(char,const char*,const char*)( = '\0', cname = "char", locname = warning: Unable to access address 0x2006cbf8 from core (invalid char ptr (0x2006cbf8))), line 933 in "22.locale.time.get.cpp" void test_english<char>(char,const char*,const char*)( = '\0', cname = "char", locname = warning: Unable to access address 0x2006cbf8 from core (invalid char ptr (0x2006cbf8))), line 933 in "22.locale.time.get.cpp" run_test(int,char**)( = 1, = 0x2ff22a3c), line 1611 in "22.locale.time.get.cpp" rw_vtest(int,char**,const char*,const char*,const char*,int(*)(int,char**),const char*,char*)(argc = 1, argv = 0x2ff22a3c, file_name = "/amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.time.get.cpp", clause = "lib.locale.time.get", comment = (nil), fun = 0x2005ec08, optstr = "", va = ""), line 1040 in "driver.cpp" rw_test(int,char**,const char*,const char*,const char*,int(*)(int,char**),const char*,...)(argc = 1, argv = 0x2ff22a3c, fname = "/amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.time.get.cpp", clause = "lib.locale.time.get", comment = (nil), testfun = 0x2005ec08, optstr = "", ... = 0x0), line 1138 in "driver.cpp" main(argc = 1, argv = 0x2ff22a3c), line 1668 in "22.locale.time.get.cpp" (dbx) list 920,940 920 TEST (T (0, 0, 0, 1, 0, 100), "%x", 8, "x", 0, Eof); 921 922 // exercise time (time_get::get_time()) 923 FUNCTION ("get_time"); 924 925 int len; 926 927 { 928 // determine whether "%X" is equivalent to "%I:%M:%S %p" 929 // (e.g., HP-UX or Linux) or to "%I:%M:%S" (e.g., Compaq 930 // Tru64 UNIX) 931 char buf [128]; 932 const std::tm tmb = mktm (0, 0, 1); 933 len = std::strftime (buf, sizeof buf, "%X", &tmb); 934 } 935 936 const int hour = 11 == len ? 12 : 0; 937 938 TEST (T ( 0, 0, 0), "%X", len, "X", 0, 11 == len ? Good : Eof); 939 TEST (T ( 0, 0, 1), "%X", len, "X", 0, 11 == len ? Good : Eof); 940 TEST (T ( 0, 0, 11), "%X", len, "X", 0, 11 == len ? Good : Eof); (dbx) quit
Attachments
Issue Links
- depends upon
-
STDCXX-877 [AIX] SIGABRT when using strftime() after enumerating locales
- Open