Public bug reported:

$valgrind --version
valgrind-3.7.0

When an application that uses the strstr() function from the C standard library 
is profiled with valgrind --tool=callgrind, the strstr() function produces 
false results (at least) under the following conditions:
* the string s1 to search in and the string s2 to search for are exact 
duplicates, that is strcmp(s1,s2)==0. s1 and s2 don't need to be pointing to 
the same memory object.
* the string length (excluding terminating zero) is a multiple of 16

Expected result: strstr(s1,s2) returns s1, indicating a match at the first 
charactor of s1
What happens: strstr(s1,s2) returns NULL, indicating no matching substring was 
found.

See attached minimal testcase for an example. Reproduce under Ubuntu 12.04 with 
the following steps:
$gcc strstrtest.c -o strstrtest
$./ strstrtest    # <-- should report no errors
$valgrind --tool=callgrind ./ strstrtest  # <-- should report errors for 
lengths multiple of 16

- The Problem does not show up under valgrind-3.6.0.SVN-Debian from Ubuntu 
10.04 Lucid Lynx
- The Problem does not show up under tool=memcheck.

Some more info:
OS: Ubuntu 12.04 Precise Pangolin
$uname -a
Linux mhassert 3.2.0-26-generic #41-Ubuntu SMP Thu Jun 14 17:49:24 UTC 2012 
x86_64 x86_64 x86_64 GNU/Linux

** Affects: valgrind (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1027977

Title:
  strstr() function produces wrong results under valgrind callgrind

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/valgrind/+bug/1027977/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to