GNU bug report logs -
#76613
diff -y crashes with apparent memory corruption
Previous Next
Full log
View this message in rfc822 format
Hi,
I'm running diffutils-3.11, downloaded from ftp.gnu.org and built with ./configure && make (no options given).
I'm seeing the problem that diff -y is crashing with various malloc-related errors. Here is an example. First I create two files a and b like so:
% seq 1 100 > a
% seq 1 100 | grep -v 50 > b
Then I run diff -y a b, which crashes with an error in free():
% diff -y a b
free(): corrupted unsorted chunks
zsh: IOT instruction src/diff -y ~/a ~/b
I haven't looked into the source to find out the problem, but I did compile a debug build and run it under Valgrind. It detected some memory corruption - here is the report:
==9602== Memcheck, a memory error detector
==9602== Copyright (C) 2002-2024, and GNU GPL'd, by Julian Seward et al.
==9602== Using Valgrind-3.24.0 and LibVEX; rerun with -h for copyright info
==9602== Command: src/diff -y /home/nick/a /home/nick/b
==9602==
==9602== Invalid write of size 8
==9602== at 0x40EC8A: find_and_hash_each_line (io.c:1017)
==9602== by 0x40FBAA: read_files (io.c:1366)
==9602== by 0x40596C: diff_2_files (analyze.c:463)
==9602== by 0x409B1F: compare_prepped_files (diff.c:1371)
==9602== by 0x40ADBF: compare_files (diff.c:1633)
==9602== by 0x408834: main (diff.c:881)
==9602== Address 0x4b12f80 is 0 bytes after a block of size 656 alloc'd
==9602== at 0x4850C7C: realloc (vg_replace_malloc.c:1801)
==9602== by 0x41A8A6: rpl_realloc (stdlib.h:2066)
==9602== by 0x41CE27: xrealloc (xmalloc.c:66)
==9602== by 0x41D196: xpalloc (xmalloc.c:271)
==9602== by 0x40EC4A: find_and_hash_each_line (io.c:1013)
==9602== by 0x40FBAA: read_files (io.c:1366)
==9602== by 0x40596C: diff_2_files (analyze.c:463)
==9602== by 0x409B1F: compare_prepped_files (diff.c:1371)
==9602== by 0x40ADBF: compare_files (diff.c:1633)
==9602== by 0x408834: main (diff.c:881)
==9602==
--9602-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) - exiting
--9602-- si_code=1; Faulting address: 0x9622BA0; sp: 0x1002cf6e20
valgrind: the 'impossible' happened:
Killed by fatal signal
host stacktrace:
==9602== at 0x5804AE1F: ??? (in /usr/libexec/valgrind/memcheck-amd64-linux)
==9602== by 0x58004E0C: ??? (in /usr/libexec/valgrind/memcheck-amd64-linux)
==9602== by 0x58005203: ??? (in /usr/libexec/valgrind/memcheck-amd64-linux)
==9602== by 0x58097E37: ??? (in /usr/libexec/valgrind/memcheck-amd64-linux)
==9602== by 0x580E1E1A: ??? (in /usr/libexec/valgrind/memcheck-amd64-linux)
sched status:
running_tid=1
Thread 1: status = VgTs_Runnable (lwpid 9602)
==9602== at 0x4850A5F: calloc (vg_replace_malloc.c:1675)
==9602== by 0x4160B0: icalloc (ialloc.h:91)
==9602== by 0x41D239: xicalloc (xmalloc.c:304)
==9602== by 0x41D1E7: xizalloc (xmalloc.c:289)
==9602== by 0x405E39: diff_2_files (analyze.c:529)
==9602== by 0x409B1F: compare_prepped_files (diff.c:1371)
==9602== by 0x40ADBF: compare_files (diff.c:1633)
==9602== by 0x408834: main (diff.c:881)
client stack range: [0x1FFEFFD000 0x1FFF000FFF] client SP: 0x1FFEFFEDA0
valgrind stack range: [0x1002BF7000 0x1002CF6FFF] top usage: 7272 of 1048576
Nick
This bug report was last modified 55 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.