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, [EMAIL PROTECTED], __from=0x10013014 "[EMAIL PROTECTED] 37»", __from_end=0x1001301d "", [EMAIL PROTECTED], __to=0x7fa405bc, __to_end=0x7fa406fc, [EMAIL PROTECTED]) 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 ([EMAIL PROTECTED], [EMAIL PROTECTED]) 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