On Sun, Sep 12, 2010 at 7:54 AM, Craig Ringer
<cr...@postnewspapers.com.au>wrote:
>
> Anyway, since you've provided a test program, I can at least run it here on
> a modern PostgreSQL and see what results I get to provide some more info. In
> this case, it runs fine and no issues are detected. I'm on a 64-bit Fedora
> 13 install with glibc 2.12.3 and postgresql 9.0rc1 , so it's not exactly a
> close match for your system. It is a Core 2 Duo, so it's SSE3 capable
> hardware as confirmed by /proc/cpuinfo. I'm using valgrind 3.5.0 .
>

I use a AMD Athlon II X4.  It's based off the new Phenom II's, so it
certainly supports SSE3 and SSE4a as well.


> ... to see if it, too, reports errors from valgrind. It doesn't here, of
> course (though interestingly strcmp returns 1 under valgrind and 17 outside
> it); I'd like to see what your results are.


I get 17 as a result with or without valgrind.  And I don't get any memory
errors.

==23894== Memcheck, a memory error detector
==23894== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==23894== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==23894== Command: ./a.out
==23894==
Comparison: 17
==23894==
==23894== HEAP SUMMARY:
==23894==     in use at exit: 16 bytes in 1 blocks
==23894==   total heap usage: 1 allocs, 0 frees, 16 bytes allocated
==23894==
==23894== 16 bytes in 1 blocks are definitely lost in loss record 1 of 1
==23894==    at 0x4C260AE: malloc (vg_replace_malloc.c:195)
==23894==    by 0x4EA8B41: strdup (in /lib64/libc-2.12.1.so)
==23894==    by 0x40061C: main (in /home/casey/kwooty/Download/a.out)
==23894==
==23894== LEAK SUMMARY:
==23894==    definitely lost: 16 bytes in 1 blocks
==23894==    indirectly lost: 0 bytes in 0 blocks
==23894==      possibly lost: 0 bytes in 0 blocks
==23894==    still reachable: 0 bytes in 0 blocks
==23894==         suppressed: 0 bytes in 0 blocks
==23894==
==23894== For counts of detected and suppressed errors, rerun with: -v
==23894== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 6 from 6)

This bug from Gentoo may be related, but I thought I had worked around it.
http://bugs.gentoo.org/show_bug.cgi?id=274771
It says to compile glibc with splitdebug, which I have and it got me past a
fatal error in valgrind.  But it does mention sse-optimized strlen().
I just checked an older program I had written, and I'm getting tons of
errors on that too.  Just a few months ago I had it down to just a couple of
errors.  Now I'm seeing lots of errors ending at __strncmp_ssse3.

I don't think valgrind is the only issue here because outside valgrind my
data is getting magically overwritten.  In the function causing that problem
I set all the fields I wanted to set by hand instead of using PQgetvalue().
 If I leave PQexec() uncommented, my data in a totally unrelated area would
change, but when I comment it out I get the expected results.  There might
be an error I'm making thats causing this, but I can't find it in valgrind
because of the huge number of errors.

Reply via email to