------- Comment #3 from dave at hiauly1 dot hia dot nrc dot ca 2007-04-01
21:36 -------
Subject: Re: FAIL: 22_locale/time_get/get_date/wchar_t/4.cc execution test
> Dave, unfortunately all the other linux targets are fine, therefore we have
> very big troubles figuring out what is happening on hppa only. Given that, as
> far as I know, no one among the v3 maintainers has access to hppa machines,
> I'm
> afraid that you have to do most of the investigation work here, despite the PR
> being categorized as libstdc++-v3... Just follow get_date... (remember to
> build
> the library -O0 -g3)
Ok, I built the library with -O0 -g3 and stepped through trying to find
the failure.
It appears that the failure occurs here:
std::ctype<wchar_t>::do_narrow (this=0x101f80, __wc=35199, __dfault=42 '*')
at ctype_members.cc:221
221 do_narrow(wchar_t __wc, char __dfault) const
Current language: auto; currently c++
(gdb) p/x __wc
$20 = 0x897f
(gdb) step
223 if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
(gdb)
226 __c_locale __old = __uselocale(_M_c_locale_ctype);
(gdb)
228 const int __c = wctob(__wc);
(gdb)
230 __uselocale(__old);
(gdb)
232 return (__c == EOF ? __dfault : static_cast<char>(__c));
(gdb) p __c
$22 = -1
The backtrace is:
(gdb) bt
#0 std::ctype<wchar_t>::do_narrow (this=0x101f80, __wc=35199, __dfault=42 '*')
at ctype_members.cc:232
#1 0x00014a30 in std::__ctype_abstract_base<wchar_t>::narrow (this=0x101f80,
__c=35199, __dfault=42 '*')
at
/home/dave/gnu/gcc-4.2/objdir/hppa-linux/libstdc++-v3/include/bits/locale_facets.h:327
#2 0x00035c94 in std::time_get<wchar_t, std::istreambuf_iterator<wchar_t,
std::char_traits<wchar_t> > >::_M_extract_num (this=0x101f80, __beg=
{<std::iterator<std::input_iterator_tag,wchar_t,long long
int,wchar_t*,wchar_t&>> = {<No data fields>}, _M_sbuf = 0x101518, _M_c =
704643144}, __end=
{<std::iterator<std::input_iterator_tag,wchar_t,long long
int,wchar_t*,wchar_t&>> = {<No data fields>}, _M_sbuf = 0x897f, _M_c = 14},
[EMAIL PROTECTED],
__min=-1073172736, __max=0, __len=951080, [EMAIL PROTECTED], [EMAIL PROTECTED])
at
/home/dave/gnu/gcc-4.2/objdir/hppa-linux/libstdc++-v3/include/bits/locale_facets.tcc:2040
#3 0x00039194 in std::time_get<wchar_t, std::istreambuf_iterator<wchar_t,
std::char_traits<wchar_t> > >::_M_extract_via_format (this=0x101f80, __beg=
{<std::iterator<std::input_iterator_tag,wchar_t,long long
int,wchar_t*,wchar_t&>> = {<No data fields>}, _M_sbuf = 0x101518, _M_c =
704643144}, __end=
{<std::iterator<std::input_iterator_tag,wchar_t,long long
int,wchar_t*,wchar_t&>> = {<No data fields>}, _M_sbuf = 0x897f, _M_c = 14},
[EMAIL PROTECTED],
[EMAIL PROTECTED], __tm=0x0, __format=0xe8328)
at
/home/dave/gnu/gcc-4.2/objdir/hppa-linux/libstdc++-v3/include/bits/locale_facets.tcc:1973
#4 0x000395d0 in std::time_get<wchar_t, std::istreambuf_iterator<wchar_t,
std::char_traits<wchar_t> > >::do_get_date (this=0x101f80, __beg=
{<std::iterator<std::input_iterator_tag,wchar_t,long long
int,wchar_t*,wchar_t&>> = {<No data fields>}, _M_sbuf = 0x101518, _M_c =
704643144}, __end=
{<std::iterator<std::input_iterator_tag,wchar_t,long long
int,wchar_t*,wchar_t&>> = {<No data fields>}, _M_sbuf = 0x897f, _M_c = 14},
[EMAIL PROTECTED],
[EMAIL PROTECTED], __tm=0x0)
at
/home/dave/gnu/gcc-4.2/objdir/hppa-linux/libstdc++-v3/include/bits/locale_facets.tcc:2163
#5 0x000343cc in std::time_get<wchar_t, std::istreambuf_iterator<wchar_t,
std::char_traits<wchar_t> > >::get_date (this=0x101f80, __beg=
{<std::iterator<std::input_iterator_tag,wchar_t,long long
int,wchar_t*,wchar_t&>> = {<No data fields>}, _M_sbuf = 0x101518, _M_c =
704643144}, __end=
{<std::iterator<std::input_iterator_tag,wchar_t,long long
int,wchar_t*,wchar_t&>> = {<No data fields>}, _M_sbuf = 0x897f, _M_c = 14},
[EMAIL PROTECTED],
[EMAIL PROTECTED], __tm=0x0)
at
/home/dave/gnu/gcc-4.2/objdir/hppa-linux/libstdc++-v3/include/bits/locale_facets.h:3147
#6 0x00010680 in test01 ()
at
/home/dave/gnu/gcc-4.2/gcc/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/4.cc:54
#7 0x00010810 in main ()
at
/home/dave/gnu/gcc-4.2/gcc/libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/4.cc:63
The failure to narrow the character causes __err to get set here:
/home/dave/gnu/gcc-4.2/objdir/hppa-linux/libstdc++-v3/include/bits/locale
_facets.tcc:2055.
This causes __tmperr to get set in 'Y' case. This causes __err to
get set again here:
/home/dave/gnu/gcc-4.2/objdir/hppa-linux/libstdc++-v3/include/bits/locale
_facets.tcc:2017.
This causes the VERIFY failure.
Is the EOF result expected for the wctob call?
Dave
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31413