stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Black (JIRA)" <j...@apache.org>
Subject [jira] Commented: (STDCXX-277) Locale stage 2 test failure
Date Thu, 24 Aug 2006 20:17:31 GMT
    [ http://issues.apache.org/jira/browse/STDCXX-277?page=comments#action_12430284 ] 
            
Andrew Black commented on STDCXX-277:
-------------------------------------

A little more digging into the situation from a slightly different direction.

On my machine, the lone locale that passes the tests is the ar_SA.ISO-8859-6 locale.  This
leads to a question about what makes this locale unique?  One observation is that it defines
its own LC_COLLATE table.  I would estimate that at least half the locales rely on the table
specified in the iso14651_t1 file, either directly or indirectly, based on a search of the
locale source files.

After doing some stepping through the locale utility, it appears that the out of range value
is being printed in the following stack trace

#0  print_weight(unsigned const*, unsigned, unsigned) (weightp=0xb7ef0988, 
    num_weights=4, longest_weight=2)
    at /build/ablack/stdcxx-test/util/locale.cpp:576
#1  0x0804c05f in write_coll_info(std::string const&, unsigned, unsigned) (
    ch=@0xbf9065b0, idx=0, tab_num=0)
    at /build/ablack/stdcxx-test/util/locale.cpp:643
#2  0x0804c8a8 in print_lc_collate() ()
    at /build/ablack/stdcxx-test/util/locale.cpp:776
#3  0x08054e9d in main (argc=0, argv=0xbf90666c)
    at /build/ablack/stdcxx-test/util/locale.cpp:2555
#4  0xb7d4fd06 in __libc_start_main () from /lib/libc.so.6

The first parameter to the print_weight function is the return value from 'collate_st->get_weight
(tab[i - first])', where collate_st is an _RW::__rw_collate_t object pointer

> Locale stage 2 test failure
> ---------------------------
>
>                 Key: STDCXX-277
>                 URL: http://issues.apache.org/jira/browse/STDCXX-277
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Utilities
>         Environment: Multiple, including Linux 2.6.14.5 + gcc 3.2.3
>            Reporter: Andrew Black
>         Attachments: en_US.ISO-8859-1.sh.out, out.1
>
>
> To test the locales, the run_locale_utils.sh script is used, residing in the etc/config
subdirectory of the source directory.
> During this process, the source file in the etc/nls subdirectory is first transformed
into a locale database using the localedef utility, then is converted back to a source file
using the locale utility.  This process is repeated twice more, with each following stage
relying on the source file from the previous itteration.  The test then concludes by checking
that the source files produced in the second and third stage are identical.
> On some platforms, including my local box, this process fails for most locales when the
localedef utility in the second stage is unable to process the output of the source file generated
by the locale utility in the first stage of the process.  Output from running the en_US.ISO-8859-1.sh
(wrapper) script with the '-d' flag on my box is attached as en_US.ISO-8859-1.sh.out.  The
failure message from the localedef utility in this case is as follows:
> Error 399: decimal value in the range [0, 255) expected: \d383
> When I search for the string '\d383' in the source file being parsed (attached as out.1),
I find it in the LC_COLLATE section.  It appears to me that either the output from the locale
utility doesn't use the correct range, or that the valid range for the parser in localedef
is incorrect.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message