stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Travis Vitek (JIRA)" <j...@apache.org>
Subject [jira] Commented: (STDCXX-664) [IBM XLC++ 9.0/AIX 5.3] SIGABRT in 22.locale.globals.mt
Date Thu, 13 Dec 2007 00:34:43 GMT

    [ https://issues.apache.org/jira/browse/STDCXX-664?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12551171
] 

Travis Vitek commented on STDCXX-664:
-------------------------------------

The actual problem is that rtti isn't enabled by default on this compiler, so the _RWSTD_DYNAMIC_CAST()
function macro that is used in _locale.h boils down to a flat C style pointer cast, which
will always succeed, even if the types are totally unrelated. The routine currently requires
that the dynamic_cast operator be defined and work correctly, and this is obviously not the
case.

I see two options to fix this. The simple option is to enable RTTI [-qrtti=dynamiccast or
-qrtti=all]. The second option is to add __rw_get_facet_by_id() overloads for each of the
_byname facets. These overloads would either avoid creating a _byname facet for the classic
locale, or would fail after creating/retrieving a non-byname facet.

> [IBM XLC++ 9.0/AIX 5.3] SIGABRT in 22.locale.globals.mt
> -------------------------------------------------------
>
>                 Key: STDCXX-664
>                 URL: https://issues.apache.org/jira/browse/STDCXX-664
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    Affects Versions: 4.2.0
>            Reporter: Travis Vitek
>            Assignee: Travis Vitek
>             Fix For: 4.2.1
>
>
> Appears to affect single-threaded bulids only.
> [vitek@rimple tests]$ ./22.locale.globals.mt 
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc running aix-5.3
> # FILE: 22.locale.globals.mt.cpp
> # COMPILED: Nov  8 2007, 21:35:16
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.global.templates
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-fK3jqa"
> # CLAUSE: lib.locale.global.templates
> # FILE: process.cpp
> # LINE: 270
> # INFO (S1) (3 lines):
> # TEXT: testing std::locale globals with 1 thread, 20000 iterations each, in 16 locales
{ "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" "AR_DZ" "AR_EG.UTF-8"
"AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" "AR_KW.UTF-8" }
> # CLAUSE: lib.locale.global.templates
> # INFO (S1) (3 lines):
> # TEXT: template <class T> bool std::has_facet (const locale&)
> # CLAUSE: lib.locale.global.templates
> # INFO (S1) (3 lines):
> # TEXT: template <class T> const T& std::use_facet (const locale&)
> # CLAUSE: lib.locale.global.templates
> # WARNING (S5) (3 lines):
> # TEXT: exceptions not thread safe, skipping that part of test
> # CLAUSE: lib.locale.global.templates
> /amd/devco/vitek/stdcxx-trunk/tests/localization/22.locale.globals.mt.cpp:311: use_facet_loop:
Assertion 'threw || opt_facets [opt_inx_collate] < 0' failed.
> IOT/Abort trap (core dumped)
> [vitek@rimple tests]$ 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message