stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Sebor <se...@roguewave.com>
Subject Re: FW: 17116,756,000
Date Wed, 09 Aug 2006 18:56:37 GMT
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

Mime
View raw message