Opened 12 years ago

Closed 12 years ago

Last modified 11 years ago

#4850 closed Bugs (invalid)

Regression test failures with ICU 4.4.2

Reported by: Katie Chan Owned by: John Maddock
Milestone: Boost 1.46.0 Component: regex
Version: Boost Development Trunk Severity: Regression
Keywords: Cc:

Description

A number of the Regex regression tests fails when compiled and ran against ICU 4.4.2. The tests all pass when it's compiled and ran against ICU 4.4.1.

Attachments (1)

test.log (18.6 KB ) - added by Katie Chan 12 years ago.
bjam output on failed tests

Download all attachments as: .zip

Change History (7)

by Katie Chan, 12 years ago

Attachment: test.log added

bjam output on failed tests

comment:1 by John Maddock, 12 years ago

Resolution: worksforme
Status: newclosed

Hmmm... works for me - tested with ICU-4.4.2 built from source with VC10 and run on Vista (32-bit).

Looks like this may be an ICU build/install issue?

BTW that exception is thrown when Collator::createInstance fails.

Please do reopen if you have more info that shows this to be a regex issue.

comment:2 by Katie Chan, 12 years ago

Resolution: worksforme
Status: closedreopened

Well, I can't know for sure this is a regex problem and not an ICU problem, but I can tell you how to reproduce it. Namely, if you build both the debug and (then) the release version of ICU, rather than just the debug version.

comment:3 by anonymous, 12 years ago

I've reproducing that - building in both orders starting from a clean install each time - but it still works for me here.

Here's some test code using just ICU, that I hope will let you reproduce the issue:

#include <unicode/utypes.h>
#include <unicode/uchar.h>
#include <unicode/coll.h>

#include <iostream>
#include <iomanip>

int main()
{
   U_NAMESPACE_QUALIFIER Locale l;
   std::cout << l.getName() << std::endl;
   UErrorCode success = U_ZERO_ERROR;
   U_NAMESPACE_QUALIFIER Collator* pcol = U_NAMESPACE_QUALIFIER Collator::createInstance(l, success);
   if(U_SUCCESS(success) == 0)
   {
      std::cout << "Collator failed to initialize" << std::endl;
      exit(1);
   }

    return 0;
}

What I suspect is happening here is that since the code uses a default locale, that somehow your ICU install does not have whatever locale your machine is using installed in the ICU dll's.

Frankly though, if the code behaves differently depending upon what order you build things (or which bits you build), then that has to be an ICU bug?

Hopefully though, this'll get us closer to understanding what's going on.

comment:4 by Katie Chan, 12 years ago

Resolution: invalid
Status: reopenedclosed

I don't know how / why you can't reproduce it seeing I've managed to reproduce the problem consistently whether I'm running Ultimate or Professional and in Win 7 x64, x86, or Win XP x86.

I've managed to figure out what the problem is, just not necessarily whether it's a VS bug or an ICU one. While building ICU4C from source, icudt44.dll is the first thing built (at 3KB). However that's not finished as the last project add about 14MB of data into the dll. The combination of VS2010 & ICU4C 4.4.2 does not do that last step if and only if one build both the Debug & Release files into the same output directory (which is the default) resulting in a DLL that's missing about 14MB of data.

comment:5 by anonymous, 12 years ago

Thanks for the update, cheers, John.

comment:6 by anonymous, 11 years ago

I've also hit this on OSX. While ICU compiles and runs fine multi-arch, or both 32/64 bit (with -arch i386 -arch x86_64) this seems to break the Collator: https://gist.github.com/1474002 which leads to invalid character handling in the uregex functions.

Note: See TracTickets for help on using tickets.