Public bug reported: A commercial application (Cadence) that runs with an older libc gives incorrect results with the current libc. I've tracked down the problem to strcpy. If I make my own strcopy, following the template of https://bugzilla.redhat.com/show_bug.cgi?id=638477#c38, the tool gives correct results. Here is mystrcpy.c:
$ cat mystrcpy.c char *strcpy(char *dest, const char *src){ char *destcopy=dest; while(*dest++ = *src++) ; return destcopy; } I've traced through the application and see that it is calling strcpy with overlapping source and destination, and that the execution goes through __strcpy_ssse3, which seems to cause the problem. I made a small testcase to replicate the behavior. Following http://forums.gentoo.org/viewtopic-t-840983-start-0.html, here is my test case: ------------ $ cat strcopytest.c char *strcpy(char *,char *); int main(){ char buf[80]; strcpy(buf, "012345678\n"); strcpy(buf, buf+1); puts(buf); return 0; } $ gcc -O2 -c mystrcpy.c $ ld -G mystrcpy.o -o mystrcpy.so $ gcc strcopytest.c -o strcopytest $ ./strcopytest 12345688 $ LD_PRELOAD=./mystrcpy.so ./strcopytest 12345678 ---------------- I know that I can make my testcase work with #include "string.h", but the I cannot recompile the commercial application, so that's not a workable solution. ProblemType: Bug DistroRelease: Ubuntu 11.04 Package: libc6 2.13-0ubuntu13 ProcVersionSignature: Ubuntu 2.6.39-3.10-generic 2.6.39 Uname: Linux 2.6.39-3-generic x86_64 Architecture: amd64 Date: Thu Jul 14 13:43:36 2011 InstallationMedia: Ubuntu 10.04 "Lucid Lynx" - Beta amd64 (20100317.1) ProcEnviron: LANGUAGE=en_US:en PATH=(custom, user) LANG=en_US.UTF-8 SHELL=/bin/bash SourcePackage: eglibc UpgradeStatus: Upgraded to natty on 2011-04-29 (76 days ago) ** Affects: eglibc (Ubuntu) Importance: Undecided Status: New ** Tags: amd64 apport-bug natty running-unity -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/810739 Title: strcpy output incorrect if src and dst overlap To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/810739/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs