This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/28059] New: codecvt locale facet is broken (reproducible crash)
- From: "rleigh at debian dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Jun 2006 13:08:07 -0000
- Subject: [Bug libstdc++/28059] New: codecvt locale facet is broken (reproducible crash)
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
The attached source file (UTF-8 encoded) demonstrates that codecvt
is broken for the simplest of transformations (UTF-8 to UCS-4).
This is pretty basic, and the underlying gconf stuff works correctly,
so the bug is either in libstdc++6 or somewhere inline in the headers.
$ ./wide
wide: ../iconv/loop.c:425: utf8_internal_loop_single: Assertion `inptr -
bytebuf > (state->__count & 7)' failed.
Aborted
While running:
(gdb) bt
#0 0x0fcc672c in __gconv_transform_utf8_internal () from /lib/tls/libc.so.6
#1 0x0fe0425c in ?? () from /lib/tls/libc.so.6
#2 0x0ffa6ef8 in std::codecvt<wchar_t, char, __mbstate_t>::do_in ()
from /usr/lib/libstdc++.so.6
#3 0x100016b4 in std::__codecvt_abstract_base<wchar_t, char, __mbstate_t>::in
(this=0x100290b8, __state=@0x7fa405a8, __from=0x10013014
"fffäESC%G�ESC%@2
37»",
__from_end=0x1001301d "", __from_next=@0x7fa405b0, __to=0x7fa405bc,
__to_end=0x7fa406fc, __to_next=@0x7fa405b4)
at
/usr/lib/gcc/powerpc-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/c
odecvt.h:204
#4 0x10001244 in to_wide_string (str=@0x7fa40758, locale=@0x7fa40738)
at wide.cc:22
#5 0x10001544 in main () at wide.cc:59
Program received signal SIGABRT, Aborted.
0x0fcd67bc in raise () from /lib/tls/libc.so.6
(gdb) bt
#0 0x0fcd67bc in raise () from /lib/tls/libc.so.6
#1 0x0fcd82c0 in abort () from /lib/tls/libc.so.6
#2 0x0fcce768 in __assert_fail () from /lib/tls/libc.so.6
#3 0x0fcc6c7c in __gconv_transform_utf8_internal () from /lib/tls/libc.so.6
#4 0x0fcc6c7c in __gconv_transform_utf8_internal () from /lib/tls/libc.so.6
#5 0x0fcc6c7c in __gconv_transform_utf8_internal () from /lib/tls/libc.so.6
#6 0x0fcc6c7c in __gconv_transform_utf8_internal () from /lib/tls/libc.so.6
#7 0x0fcc6c7c in __gconv_transform_utf8_internal () from /lib/tls/libc.so.6
#8 0x0fcc6c7c in __gconv_transform_utf8_internal () from /lib/tls/libc.so.6
#9 0x0fcc6c7c in __gconv_transform_utf8_internal () from /lib/tls/libc.so.6
#10 0x0fcc6c7c in __gconv_transform_utf8_internal () from /lib/tls/libc.so.6
#11 0x0fcc6c7c in __gconv_transform_utf8_internal () from /lib/tls/libc.so.6
Previous frame inner to this frame (corrupt stack?)
It affects GCC 4.2 (20060613), 4.1, 4.0, 3.3
on Debian GNU/Linux (unstable).
The program works correctly with 3.4:
$ g++-3.4 -o wide wide.cc
$ ./wide
1
fffäß»fffäß»$
Regards,
Roger
--
Summary: codecvt locale facet is broken (reproducible crash)
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rleigh at debian dot org
GCC build triplet: powerpc-linux-gnu
GCC host triplet: powerpc-linux-gnu
GCC target triplet: powerpc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28059