pthread6 vs hppa-linux

Phil Edwards phil@jaj.com
Thu Dec 12 18:04:00 GMT 2002


On Wed, Dec 11, 2002 at 07:13:57PM -0500, John David Anglin wrote:
> 
> #0  _wordcopy_fwd_aligned (dstp=1141769664, srcp=2097144, len=248528)
>     at ../sysdeps/generic/wordcopy.c:103
> #1  0x00082d30 in memcpy (dstpp=0x44000014, srcpp=0x1ffff8, len=1913072)
>     at ../sysdeps/generic/memcpy.c:55
> #2  0x00016e8c in std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned) (this=0x11fa3c, __alloc=@0x1ffff8, __res=248528)

[...]

> The code in _wordcopy_fwd_aligned causes a segementation fault:
> 
> Dec 11 14:27:54 gsyprf11 kernel: do_page_fault() pid=21129 command='pthread6.xgs' type=15 address=0x00200000
> Dec 11 14:27:54 gsyprf11 kernel: vm_start = 0x00120000, vm_end = 0x00200000
> 
> The memcpy accesses memory beyond that allocated.  I have the sense that
> _M_clone is supposed to catch copy failures but I am not quite sure.  If
> it is, this might indicate a problem with the hppa-linux v3 implementation of
> the trap handler.

_M_clone catches copy failures in the literal C++ sense of catches:  if
the copy operations throws an exception, it does some cleanup, and then
propogates the exception (as required).  It does nothing to ward against
bad implementations of memcpy, or any other kind of segmentation fault.

-- 
I would therefore like to posit that computing's central challenge, viz. "How
not to make a mess of it," has /not/ been met.
                                                 - Edsger Dijkstra, 1930-2002



More information about the Libstdc++ mailing list