On Monday, September 24, 2012, Tom Hughes wrote:
> > ==16432== Invalid read of size 8
> > ==16432==    at 0x43319E: trampoline() (thread.cc:134)
> > ==16432==  Address 0x646b5d8 is 56 bytes inside a block of size 72
> > alloc'd ==16432==    at 0x4C285A4: operator new(unsigned long)
> > (vg_replace_malloc.c:298) ==16432==    by 0x432EFF: thread_new(void
> > (*)(void*, void*, void*), void*, void*, void*, unsigned long, int)
> > (thread.cc:142)
> > [ snip internal stuff ]
> > ==16432==    by 0x4083AF: main (main.cc:210)
> > 
> > If it's relevant, this is inside a little
> > userspace-cooperative-threads package I wrote and the code is running
> > on a malloc()'d stack.
> 
> At a guess you're reading below the stack pointer.
> 
> Assuming that the block it is complaining about is the block that your
> user space thread is using as stack what is happening is that when the
> stack is popped valgrind will mark the stack below the stack pointer as
> invalid, and then if you try and read it you will get that error.

The block is only 72 bytes long, though, which seems implausibly small
for a stack.

J

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to