Martin Sebor wrote:
Nicole Willson wrote:

I had to do it for every call to msgs.open.  Just change it like this:
    // const std::messages_base::catalog cat = (msgs.open)(CAT_NAME,
loc);
const std::string cat_name_str = CAT_NAME; const std::messages_base::catalog cat =
(msgs.open)(cat_name_str, loc);

The problem was that it was returning some number like -5475, instead of
the number it should have been returning and causing the close to fail.
This is a compiler bug that I've not yet been able to document with a
testcase.  Fortunately, it is easy to workaround, if somewhat annoying.


Hmm. That's not what I'm seeing in the latest test. The latest
test aborts in a call to close with a good catalog id (0) but
one that's already been closed. The test exercises the facet's
ability to detect this (a double close) and throw an exception
in response to this type of an error.

I tried various versions of this workaround but no dice. My guess
is that the compiler generates bad code and your change happened
to shuffle things around just enough for the codegen bug to go away.
Since my sources are different the same change doesn't have the same
effect. It would be nice to put together a small test case so we
understand what it is that triggers the bug and can work around it
reliably (and so we can tell IBM about it).



I've also solved the problem with the stress_test.  Since the NLSPATH
variable is being used, it can't have the .cat at the end of the catalog
name - NLSPATH has already added that, so it is looking for
catalogname.cat.cat and of course, not finding it.  I'm surprised that
this would work on any system.


No kidding! There must be something else going on since I'm not
seeing any failures with gcc. I suspect the stress_test is buggy
beyond the NLSPATH problem and the bug is masking the failures
with gcc. Let me look into it.

It turns out that the call to open() was failing with gcc as well
but a bug in stress_test() was preventing from the failures from
being diagnosed. The change below is an attempt to fix it. Let me
know if it works for you.

  http://svn.apache.org/viewvc?rev=430112&view=rev

Martin

Reply via email to