Nicole Willson wrote:
There is a workaround that keeps it from aborting - basically instead of
calling x = foo("some string");, you set the string ahead of time, ie
Char *some_str = "some string"; x = foo(some_str);
Thanks for sharing that! What's foo and what line of the test
is the call that needs to be changed on? On the latest trunk
the abort happens on line 439 where there's no string argument
anywhere:
429 template <class charT>
430 std::messages_base::catalog
431 open_catalog (const std::messages<charT> &msgs,
432 const char *cat_name, const std::locale &loc,
433 bool expect_exception, const char *cname, int line)
434 {
435 std::messages_base::catalog cat = -1;
436
437 try {
438 // an already closed cat should throw an exception
439 cat = (msgs.open)(cat_name, loc);
440
441 rw_assert (!expect_exception, 0, line,
This keeps it from screwing up the return of foo.
The failures that I am now getting are failed assertions because catopen
fails and returns a -1 instead of the catid needed by stress_test.
Unless we're running into some undefined behavior exposed by
the compiler (which might be corrupting the name of the catalog
or some libc internal data) the catopen() call should succeed
with xlC just as it does with gcc on the same machine. I.e.,
it doesn't look like there's a simple logic error in the test.
Martin