This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/42182] memory errors using valarrays



------- Comment #2 from christian dot bruel at st dot com  2009-11-26 11:35 -------
Created an attachment (id=19154)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19154&action=view)
computed assignment test case

compiled with g++ -O0

gnx2439$ valgrind ./a.out==1599== Memcheck, a memory error detector
==1599== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==1599== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==1599== Command: ./a.out
==1599== 
==1599== Invalid read of size 1
==1599==    at 0x8048A0B: void
std::_Array_augmented___plus<int>(std::_Array<int>, std::_Array<bool>,
std::_Array<int>, unsigned int) (in /home/bruel/tmp/a.out)
==1599==    by 0x80488D4: std::mask_array<int>::operator+=(std::valarray<int>
const&) const (in /home/bruel/tmp/a.out)
==1599==    by 0x80485E9: main (in /home/bruel/tmp/a.out)
==1599==  Address 0x4129061 is 0 bytes after a block of size 1 alloc'd
==1599==    at 0x40061CC: operator new(unsigned int) (vg_replace_malloc.c:214)
==1599==    by 0x804867E: std::__valarray_get_memory(unsigned int) (in
/home/bruel/tmp/a.out)
==1599==    by 0x8048920: bool* restrict
std::__valarray_get_storage<bool>(unsigned int) (in /home/bruel/tmp/a.out)
==1599==    by 0x8048728: std::valarray<bool>::valarray(bool const&, unsigned
int) (in /home/bruel/tmp/a.out)
==1599==    by 0x804857B: main (in /home/bruel/tmp/a.out)
==1599== 
==1599== Invalid read of size 4
==1599==    at 0x8048A18: void
std::_Array_augmented___plus<int>(std::_Array<int>, std::_Array<bool>,
std::_Array<int>, unsigned int) (in /home/bruel/tmp/a.out)
==1599==    by 0x80488D4: std::mask_array<int>::operator+=(std::valarray<int>
const&) const (in /home/bruel/tmp/a.out)
==1599==    by 0x80485E9: main (in /home/bruel/tmp/a.out)
==1599==  Address 0x4129108 is not stack'd, malloc'd or (recently) free'd
==1599== 
==1599== Invalid write of size 4
==1599==    at 0x8048A24: void
std::_Array_augmented___plus<int>(std::_Array<int>, std::_Array<bool>,
std::_Array<int>, unsigned int) (in /home/bruel/tmp/a.out)
==1599==    by 0x80488D4: std::mask_array<int>::operator+=(std::valarray<int>
const&) const (in /home/bruel/tmp/a.out)
==1599==    by 0x80485E9: main (in /home/bruel/tmp/a.out)
==1599==  Address 0x4129108 is not stack'd, malloc'd or (recently) free'd


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42182


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]