stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Sebor (JIRA)" <j...@apache.org>
Subject [jira] Commented: (STDCXX-140) [NetBSD 3.0] accum hangs during execution
Date Wed, 22 Mar 2006 17:09:02 GMT
    [ http://issues.apache.org/jira/browse/STDCXX-140?page=comments#action_12371435 ] 

Martin Sebor commented on STDCXX-140:
-------------------------------------

Here's a simple test case that reproduces it with a library built with _RWSTD_CAT_SEP #defined
to the empty string (""). __rw_locale::_C_is_managed() ends up in an infinite loop:

$ cat t.cpp && make t && gdb t -quiet
#include <locale>
#include <ostream>

int main ()
{
    std::ostream strm (0);

    std::use_facet<std::collate<char> >(strm.getloc ());
    strm.widen ('@');
}

gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG   -pthreads -D_RWSTD_USE_CONFIG
-I/build/sebor/gcc-4.1.0-15s/include -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/../rwtest
-I/build/sebor/dev/stdlib/../rwtest/include -I/build/sebor/dev/stdlib/tests/include  -pedantic
-nostdinc++ -g  -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long  t.cpp
gcc t.o -o t -L/build/sebor/gcc-4.1.0-15s/rwtest -lrwtest15s -pthreads -L/build/sebor/gcc-4.1.0-15s/lib
-lstd15s  -lsupc++ -lm
(gdb) r
Starting program: /build/sebor/gcc-4.1.0-15s/tests/t 
^C
Program received signal SIGINT, Interrupt.
0x00022df4 in __rw::__rw_locale::_C_is_managed (this=0xc65e4, cat=256)
    at /build/sebor/dev/stdlib/src/locale_body.cpp:1121
1121                    if (*_RWSTD_CAT_SEP == *locname)
(gdb) where
#0  0x00022df4 in __rw::__rw_locale::_C_is_managed (this=0xc65e4, cat=256)
    at /build/sebor/dev/stdlib/src/locale_body.cpp:1121
#1  0x00026dc0 in ~locale (this=0xffbff9d4)
    at /build/sebor/dev/stdlib/src/locale_core.cpp:68
#2  0x00028f58 in std::basic_ios<char, std::char_traits<char> >::widen (
    this=0xffbffa58, __c=64 '@') at _basic_ios.h:219
#3  0x00012230 in main () at t.cpp:9

> [NetBSD 3.0] accum hangs during execution
> -----------------------------------------
>
>          Key: STDCXX-140
>          URL: http://issues.apache.org/jira/browse/STDCXX-140
>      Project: C++ Standard Library
>         Type: Bug
>   Components: Examples
>     Versions: 4.1.4
>  Environment: NetBSD 3.0
> GCC 3.3.3
>     Reporter: Andrew Black
>     Assignee: Martin Sebor

>
> When trying to run the accum example on this platform, it hangs after the first line
of text is sent to stdout.
> Runing the example under gdb, then sending an interupt signal after it hangs produces
the following output
> td143.testdrive.hp.com> gdb accum 
> GNU gdb 5.3nb1
> Copyright 2002 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i386--netbsdelf"...
> (gdb) run
> Starting program: /tmp/ablackrw/stdcxx-11d/examples/accum 
> For the series: 
> Program received signal SIGINT, Interrupt.
> 0xbdb4691d in __rw::__rw_locale::_C_is_managed(int) const (this=0xbdbe45e0, 
>     cat=256) at /house/ablackrw/stdcxx/src/locale_body.cpp:1092
> 1092                while (next && !(__rw_cats [catinx].facet_bits & (1 <<
i))) {
> (gdb) bt
> #0  0xbdb4691d in __rw::__rw_locale::_C_is_managed(int) const (
>     this=0xbdbe45e0, cat=256)
>     at /house/ablackrw/stdcxx/src/locale_body.cpp:1092
> #1  0xbdb48b91 in std::locale::~locale() (this=0xbfbfeb10)
>     at /house/ablackrw/stdcxx/src/locale_core.cpp:68
> #2  0xbdb57a88 in std::basic_ios<char, std::char_traits<char> >::widen(char)
const (this=0xbdbe07e4, __c=32 ' ')
>     at /house/ablackrw/stdcxx/include/rw/_basic_ios.h:219
> #3  0xbdb57474 in std::basic_ios<char, std::char_traits<char> >::fill() const
(
>     this=0xbdbe07e4) at /house/ablackrw/stdcxx/include/rw/_basic_ios.h:253
> #4  0xbdb57d91 in std::basic_ostream<char, std::char_traits<char> >&
__rw::__rw_insert<char, std::char_traits<char>, long>(std::basic_ostream<char,
std::char_traits<char> >&, long) (__strm=@0xbdbe07e0, __val=1)
>     at /house/ablackrw/stdcxx/include/rw/_ioinsert.cc:43
> #5  0xbdb66e8f in std::ostream::operator<<(int) (this=0xbdbe07e0, __val=1)
>     at /house/ablackrw/stdcxx/include/ostream:282
> #6  0x08048fd1 in main ()
>     at /house/ablackrw/stdcxx/examples/manual/accum.cpp:49
> #7  0x08048cb6 in ___start ()

-- 
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