Menu

#120 Stl_unit_test hangs on startup for Ukrainian locale

5.0
closed
5
2007-02-21
2007-02-19
Andy
No

I'm using Visual Studio 2003 and Stlport 5.1.1 on WinXP SP2.
I've built the stlport dlls and stl_unit_test executables using default settings.
Both debug and release versions of stl_unit_test hang without any output.
Debugging shows that it runs into an unfinite loop on initializing a locale.

Call stack is below. Note the value of NTDate. It ends with ' p.' which is Ukrainian abbreviation for "year". Most probably it's the reason for the infinite loop.

stlportd.5.1.dll!__ConvertDate(const char * NTDate=0x0012f9d8("d MMMM yyyy' р.'"), char * buffer=0x00000000, int buf_size=11) Line 544 C
stlportd.5.1.dll!_Locale_time_create(const char * name=0x0012fbc4, _Locale_name_hint * lc_hint=0x00378380) Line 756 + 0x10 C
stlportd.5.1.dll!stlp_std::priv::_Loc_time_create(const char * s=0x0012fbc4, _Locale_name_hint * hint=0x00378380) Line 40 + 0x10 C++
stlportd.5.1.dll!stlp_std::priv::__acquire_category(const char * name=0x0012fdc8, _Locale_name_hint * hint=0x00378380, const char * (const char *, char *, _Locale_name_hint *)* extract_name=0x1006a1c0, void * (const char *, _Locale_name_hint *)* create_obj=0x10059fd0, const char * (char *)* default_obj=0x10059ff0, stlp_std::hash_map<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char> >,stlp_std::pair<void *,unsigned int>,stlp_std::hash<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char> > >,stlp_std::equal_to<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char> > >,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char> > const ,stlp_std::pair<void *,unsigned int> > > > * * M=0x100b6a24) Line 169 + 0xb C++
stlportd.5.1.dll!stlp_std::priv::__acquire_time(const char * name=0x0012fdc8, _Locale_name_hint * hint=0x00378380) Line 224 + 0x22 C++
stlportd.5.1.dll!stlp_std::time_get_byname<char,stlp_std::istreambuf_iterator<char,stlp_std::char_traits<char> > >::time_get_byname<char,stlp_std::istreambuf_iterator<char,stlp_std::char_traits<char> > >(const char * __name=0x0012fdc8, unsigned int __refs=0, _Locale_name_hint * __hint=0x00378380) Line 203 + 0x47 C++
stlportd.5.1.dll!stlp_std::_Locale_impl::insert_time_facets(const char * pname=0x0012fdc8, _Locale_name_hint * hint=0x00378380) Line 344 + 0x41 C++
> stlportd.5.1.dll!stlp_std::locale::locale(const char * name=0x0058c8ec) Line 124 + 0x10 C++
stl_unit_testd.exe!$E7() Line 928 + 0x13 C++
msvcr71d.dll!_initterm(void (void)* * pfbegin=0x005e40c0, void (void)* * pfend=0x005e4198) Line 600 C
stl_unit_testd.exe!mainCRTStartup() Line 336 + 0xf C

Discussion

  • Petr Ovtchenkov

    Petr Ovtchenkov - 2007-02-19
    • assigned_to: nobody --> dums
     
  • Francois Dumont

    Francois Dumont - 2007-02-19

    Logged In: YES
    user_id=1096600
    Originator: NO

    Thanks for the report, it is a side effect of the multi threading fix. __ConvertDate used to be only called when using time_get/time_put locale facet, it is now called on locale initialization. Even if this code is rather old it must not have been fully tested as not regularly used.

    Thanks for the report.

     
  • Francois Dumont

    Francois Dumont - 2007-02-21

    Logged In: YES
    user_id=1096600
    Originator: NO

    Fixed in STLPORT_5_1 branch, this is a very blocking bug so I am going to release 5.1.2 asap.

    Thanks

     
  • Francois Dumont

    Francois Dumont - 2007-02-21
    • status: open --> closed
     

Log in to post a comment.