[
https://issues.apache.org/jira/browse/STDCXX-847?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12594679#action_12594679
]
Martin Sebor commented on STDCXX-847:
-------------------------------------
That's one option. Another would be to store the data in svn and have the
driver search the stored data first and then check the results against the
actual data obtained from the system. This might mean a few trips back and
forth on machines with some locales missing but in most cases it would avoid
the overhead of going to the OS at all. But your solution is probably more
reliable and might be less elaborate to implement.
> [XLC++ 7,8,9] SEGV in 22.locale.time.get
> ----------------------------------------
>
> Key: STDCXX-847
> URL: https://issues.apache.org/jira/browse/STDCXX-847
> Project: C++ Standard Library
> Issue Type: Bug
> Components: Test Driver
> Affects Versions: 4.2.1
> Environment: AIX 5.3 PowerPC IBM XLC++ 9.0
> AIX 5.3 PowerPC IBM XLC++ 8.0
> AIX 5.3 PowerPC IBM XLC++ 7.0
> Reporter: Travis Vitek
> Assignee: Travis Vitek
> Fix For: 4.2.2
>
> Original Estimate: 4h
> Time Spent: 8h
> Remaining Estimate: 0h
>
> On AIX, when compiled with XLC++, the test
> [22.locale.time.get.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.time.get.cpp?view=markup]
> fails with a {{SIGSEGV}} in all build types.
> This is the stack dump at the time of the crash.
> {noformat}
> 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
> {noformat}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.