Hello Martin and everyone, Thanks. I added -D_RWSTDDEBUG to the Makefile like:
setstr : setstr.o CC -D_RWSTDDEBUG -mt -g -xdebugformat=stabs -xs -m64 -library=%none -I/h/goanna/1/a_5.10_m64/c/include -o setstr setstr.o -L/h/goanna/1/a_5.10_m64/c/lib -R/h/goanna/1/a_5.10_m64/c/lib -lstd15D setstr.o : setstr.cpp CC -D_RWSTDDEBUG -mt -g -xdebugformat=stabs -xs -m64 -library=%none -I/h/goanna/1/a_5.10_m64/c/include -c setstr.cpp clean: rm setstr setstr.o compiled the following tiny program with Sun Studio 12 on Solaris 10u4 with stdcxx compiled from subversion as 64 bit 15D: #include <set> #include <string> std::set<std::string> setstr; int main(int argc, char *argv[]) { std::copy(argv, argv + argc, std::inserter(setstr, setstr.end())); return 0; } and ran it, unfortunately though it still encounters a sigsegv. So I tried running it in dbx with Run Time Checking: goanna% dbx setstr Reading setstr Reading ld.so.1 Reading libstd15D.so.4.2.0 Reading libCrun.so.1 Reading libm.so.2 Reading libthread.so.1 Reading libc.so.1 dbx: warning: undefined type number (0,72) at /h/goanna/2/eng/dev/stdcxx/setstr/setstr:setstr.cpp stab #64 nJ_C_link_t(0,69):t(0,71)=*(0,72), assuming type `(int {assumed})' (dbx) check -all access checking - ON memuse checking - ON (dbx) run Running: setstr (process id 2876) Reading rtcapihook.so Reading libdl.so.1 Reading rtcaudit.so Reading libmapmalloc.so.1 Reading libgen.so.1 Reading rtcboot.so Reading librtc.so RTC: Enabling Error Checking... RTC: Running program... Reading disasm.so Read from uninitialized (rui) on thread 1: Attempting to read 8 bytes at address 0x424818 which is 32 bytes into a heap block of size 1280 bytes at 0x4247f8 This block was allocated from: [1] operator new() at 0xfffffd7fddb0a0e9 [2] __rw::__rw_allocate() at line 61 in "memory.cpp" [3] std::allocator<__rw::__rw_rb_tree_node<std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >::allocate() at line 144 in "_allocator.h" [4] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_C_add_new_buffer() at line 143 in "_tree.cc" [5] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_C_get_link() at line 360 in "_tree.h" [6] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_C_get_node() at line 393 in "_tree.h" [7] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_C_init() at line 460 in "_tree.h" [8] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::__rb_tree() at line 56 in "_tree.cc" Variable is 'this' [EMAIL PROTECTED] ([EMAIL PROTECTED]) stopped in std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_C_pref at line 842 in file "string" 842 return _RWSTD_REINTERPRET_CAST (_C_string_ref_type*, _C_data) - 1; (dbx) where current thread: [EMAIL PROTECTED] =>[1] std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_C_pref(this = 0x424818), line 842 in "string" [2] std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size(this = 0x424818), line 247 in "string" [3] std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size(this = 0x424818), line 247 in "string" [4] std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare(this = 0x424818, __str = CLASS), line 1186 in "string" [5] std::operator< <char,std::char_traits<char>,std::allocator<char> >(__lhs = CLASS, __rhs = CLASS), line 1356 in "string" [6] std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >::operator()(this = 0x422778, __x = CLASS, __y = CLASS), line 94 in "_funcbase.h" [7] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::insert(this = 0x422748, __it = CLASS, __v = CLASS, __dup = false), line 356 in "_tree.cc" [8] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::insert(this = 0x422748, __it = CLASS, __x = CLASS, __dup = false), line 592 in "_tree.h" [9] std::set<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::insert(this = 0x422748, __it = CLASS, __x = CLASS), line 172 in "set" [10] std::insert_iterator<std::set<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >::operator=(this = 0xfffffd7fffdfd530, __x = CLASS), line 501 in "_iterator.h" [11] std::copy<char**,std::insert_iterator<std::set<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > >(__first = 0xfffffd7fffdfd618, __last = 0xfffffd7fffdfd620, __res = CLASS), line 95 in "_algobase.h" [12] main(argc = 1, argv = 0xfffffd7fffdfd618), line 8 in "setstr.cpp" (dbx) print -r *this *this = { basic_string<char,std::char_traits<char>,std::allocator<char> >::_C_data = (nil) basic_string<char,std::char_traits<char>,std::allocator<char> >::npos = -1 _C_null_ref = struct __rw::__null_ref<char,std::char_traits<char>,std::allocator<char> > /* STATIC CLASS */ } (dbx) cont Read from unallocated (rua) on thread 1: Attempting to read 8 bytes at address 0xfffffffffffffff8 [EMAIL PROTECTED] ([EMAIL PROTECTED]) stopped in __rw::__string_ref<char,std::char_traits<char>,std::allocator<char> >::size at line 211 in file "_strref.h" 211 return _C_size._C_size; (dbx) where current thread: [EMAIL PROTECTED] =>[1] __rw::__string_ref<char,std::char_traits<char>,std::allocator<char> >::size(this = 0xffffffffffffffe8), line 211 in "_strref.h" [2] std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size(this = 0xffffffffffffffe8), line 247 in "string" [3] std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size(this = 0x424818), line 247 in "string" [4] std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare(this = 0x424818, __str = CLASS), line 1186 in "string" [5] std::operator< <char,std::char_traits<char>,std::allocator<char> >(__lhs = CLASS, __rhs = CLASS), line 1356 in "string" [6] std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >::operator()(this = 0x422778, __x = CLASS, __y = CLASS), line 94 in "_funcbase.h" [7] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::insert(this = 0x422748, __it = CLASS, __v = CLASS, __dup = false), line 356 in "_tree.cc" [8] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::insert(this = 0x422748, __it = CLASS, __x = CLASS, __dup = false), line 592 in "_tree.h" [9] std::set<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::insert(this = 0x422748, __it = CLASS, __x = CLASS), line 172 in "set" [10] std::insert_iterator<std::set<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >::operator=(this = 0xfffffd7fffdfd530, __x = CLASS), line 501 in "_iterator.h" [11] std::copy<char**,std::insert_iterator<std::set<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > >(__first = 0xfffffd7fffdfd618, __last = 0xfffffd7fffdfd620, __res = CLASS), line 95 in "_algobase.h" [12] main(argc = 1, argv = 0xfffffd7fffdfd618), line 8 in "setstr.cpp" (dbx) print -r *this dbx: cannot access address 0xffffffffffffffe8 (dbx) frame 2 Current function is std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size 247 return _C_pref ()->size (); (dbx) print -r *this dbx: cannot access address 0xffffffffffffffe8 (dbx) frame 4 Current function is std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare 1186 const size_type __n1 = size (); (dbx) (dbx) print -r *this *this = { basic_string<char,std::char_traits<char>,std::allocator<char> >::_C_data = (nil) basic_string<char,std::char_traits<char>,std::allocator<char> >::npos = -1 _C_null_ref = struct __rw::__null_ref<char,std::char_traits<char>,std::allocator<char> > /* STATIC CLASS */ } (dbx) cont signal SEGV (no mapping at the fault address) at 0xfffffd7fe3f3cd00 0xfffffd7fe3f3cd00: __rtc_catch_segv : pushq %rbp Current function is std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size 247 return _C_pref ()->size (); (dbx) where current thread: [EMAIL PROTECTED] [1] 0xfffffd7fd7405fcf(0xffffffffffffffe8, 0xfffffd7fffdfd4d8, 0xfffffd7fffdfd4d8, 0x0, 0xffffffffffffffe8, 0x4247f8), at 0xfffffd7fd7405fcf [2] __sighndlr(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfffffd7fd9fd1216 =>[3] std::basic_string<char,std::char_traits<char>,std::allocator<char> >::size(this = 0x424818), line 247 in "string" [4] std::basic_string<char,std::char_traits<char>,std::allocator<char> >::compare(this = 0x424818, __str = CLASS), line 1186 in "string" [5] std::operator< <char,std::char_traits<char>,std::allocator<char> >(__lhs = CLASS, __rhs = CLASS), line 1356 in "string" [6] std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >::operator()(this = 0x422778, __x = CLASS, __y = CLASS), line 94 in "_funcbase.h" [7] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::insert(this = 0x422748, __it = CLASS, __v = CLASS, __dup = false), line 356 in "_tree.cc" [8] __rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,__rw::__ident<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::insert(this = 0x422748, __it = CLASS, __x = CLASS, __dup = false), line 592 in "_tree.h" [9] std::set<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::insert(this = 0x422748, __it = CLASS, __x = CLASS), line 172 in "set" [10] std::insert_iterator<std::set<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >::operator=(this = 0xfffffd7fffdfd530, __x = CLASS), line 501 in "_iterator.h" [11] std::copy<char**,std::insert_iterator<std::set<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > >(__first = 0xfffffd7fffdfd618, __last = 0xfffffd7fffdfd620, __res = CLASS), line 95 in "_algobase.h" [12] main(argc = 1, argv = 0xfffffd7fffdfd618), line 8 in "setstr.cpp" (dbx) print -r *this *this = { basic_string<char,std::char_traits<char>,std::allocator<char> >::_C_data = (nil) basic_string<char,std::char_traits<char>,std::allocator<char> >::npos = -1 _C_null_ref = struct __rw::__null_ref<char,std::char_traits<char>,std::allocator<char> > /* STATIC CLASS */ } (dbx) Thanks, Mark --