Am 24.04.2017 um 12:39 schrieb Duy Nguyen:
BTW, I ran t7009 with valgrind and it reported this. Is it something we should be worried about? I vaguely recall you're doing something with prio-queue... ==4246== Source and destination overlap in memcpy(0x5952990, 0x5952990, 16) ==4246== at 0x4C2EACD: memcpy@@GLIBC_2.14 (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==4246== by 0x545D05: swap (prio-queue.c:15) ==4246== by 0x545D72: prio_queue_reverse (prio-queue.c:25) ==4246== by 0x4CBC0C: sort_in_topological_order (commit.c:723) ==4246== by 0x574C97: prepare_revision_walk (revision.c:2858) ==4246== by 0x48A2BA: cmd_rev_list (rev-list.c:385) ==4246== by 0x405A6F: run_builtin (git.c:371) ==4246== by 0x405CDC: handle_builtin (git.c:572) ==4246== by 0x405E51: run_argv (git.c:624) ==4246== by 0x405FF3: cmd_main (git.c:701) ==4246== by 0x4A48CE: main (common-main.c:43)
I can only get gcc and clang to call memcpy instead of inlining it by specifying -fno-builtin. Do you use that option? If yes, why? (Just curious.) But I can't get Valgrind to report overlapping (nicely explained in http://valgrind.org/docs/manual/mc-manual.html#mc-manual.overlap, by the way), not for t7009 and not for the short test program at the bottom. Do you set flags in GIT_VALGRIND_OPTIONS or use a special version of Valgrind? I use valgrind-3.12.0.SVN from Debian testing. Thanks, René /* Compile with -fno-builtin. */ #include <string.h> int main(void) {int i = 1; memcpy(&i, &i, sizeof(i)); return i;}