git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / Atom feed
* Regression in v2.23
@ 2019-10-07 11:06 Uwe Kleine-König
  2019-10-07 13:48 ` Thomas Gummerer
  0 siblings, 1 reply; 10+ messages in thread
From: Uwe Kleine-König @ 2019-10-07 11:06 UTC (permalink / raw)
  To: git; +Cc: Thomas Gummerer, Johannes Schindelin, entwicklung

Hello,

With git 2.23.0 I have:

	uwe@taurus:~/tmp/rangediff-segfault$ git init
	Initialized empty Git repository in /home/uwe/tmp/rangediff-segfault/.git/
	uwe@taurus:~/tmp/rangediff-segfault$ echo root > root
	uwe@taurus:~/tmp/rangediff-segfault$ git add root
	uwe@taurus:~/tmp/rangediff-segfault$ git commit -m root
	[master (root-commit) b0feddb2dee8] root
	 1 file changed, 1 insertion(+)
	 create mode 100644 root
	uwe@taurus:~/tmp/rangediff-segfault$ echo content > file
	uwe@taurus:~/tmp/rangediff-segfault$ chmod +x file
	uwe@taurus:~/tmp/rangediff-segfault$ git add file
	uwe@taurus:~/tmp/rangediff-segfault$ git commit -m file
	[master 45b547c57acd] file
	 1 file changed, 1 insertion(+)
	 create mode 100755 file
	uwe@taurus:~/tmp/rangediff-segfault$ chmod -x file
	uwe@taurus:~/tmp/rangediff-segfault$ git add file
	uwe@taurus:~/tmp/rangediff-segfault$ git commit -m 'chmod -x'
	[master eaa5d3b98caa] chmod -x
	 1 file changed, 0 insertions(+), 0 deletions(-)
	 mode change 100755 => 100644 file
	uwe@taurus:~/tmp/rangediff-segfault$ git range-diff @~2..@~ @~2..
	Segmentation fault (core dumped)

Bisecting points to b66885a30cb84fc61986bc4eea805a31fdbea79a, current master
(b744c3af07a15aaeb1b82fab689995fd5528f120) segfaults in the same way.

This is somehow similar to
https://public-inbox.org/git/20190923101929.GA18205@kitsune.suse.cz/ but
the patch by Johannes Schindelin sent in
https://public-inbox.org/git/pull.373.git.gitgitgadget@gmail.com/
doesn't help me.

For me the segfault also happens in

	strbuf_addstr(&buf, patch.new_name);

with patch.new_name being NULL.

The matching backtrace and patch object looks as follows:

	(gdb) bt
	#0  __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:65
	#1  0x0000555cc448949c in strbuf_addstr (s=<optimized out>, sb=0x7ffcd1d9ef00)
	    at strbuf.h:292
	#2  read_patches (range=range@entry=0x555cc5dc2b70 "@~2..", 
	    list=list@entry=0x7ffcd1d9f280) at range-diff.c:126
	#3  0x0000555cc44898a8 in show_range_diff (range1=0x555cc5dc2b50 "@~2..@~", 
	    range2=0x555cc5dc2b70 "@~2..", creation_factor=60, dual_color=1, 
	    diffopt=diffopt@entry=0x7ffcd1d9f680) at range-diff.c:507
	#4  0x0000555cc4397aa6 in cmd_range_diff (argc=<optimized out>, 
	    argv=<optimized out>, prefix=<optimized out>) at builtin/range-diff.c:80
	#5  0x0000555cc4328494 in run_builtin (argv=<optimized out>, 
	    argc=<optimized out>, p=<optimized out>) at git.c:445
	#6  handle_builtin (argc=<optimized out>, argv=<optimized out>) at git.c:674
	#7  0x0000555cc4329554 in run_argv (argv=0x7ffcd1d9f9e0, argcp=0x7ffcd1d9f9ec)
	    at git.c:741
	#8  cmd_main (argc=<optimized out>, argv=<optimized out>) at git.c:872
	#9  0x0000555cc432803a in main (argc=4, argv=0x7ffcd1d9fc78)
	    at common-main.c:52
	(gdb) up 2
	#2  read_patches (range=range@entry=0x555cc5dc2b70 "@~2..", 
	    list=list@entry=0x7ffcd1d9f280) at range-diff.c:126
	126	range-diff.c: No such file or directory.
	(gdb) print patch
	$1 = {new_name = 0x0, old_name = 0x0, def_name = 0x555cc5dc98c0 "file", 
	  old_mode = 33261, new_mode = 33188, is_new = 0, is_delete = 0, rejected = 0, 
	  ws_rule = 0, lines_added = 0, lines_deleted = 0, score = 0, 
	  extension_linenr = 0, is_toplevel_relative = 0, inaccurate_eof = 0, 
	  is_binary = 0, is_copy = 0, is_rename = 0, recount = 0, 
	  conflicted_threeway = 0, direct_to_threeway = 0, crlf_in_old = 0, 
	  fragments = 0x0, result = 0x0, resultsize = 0, 
	  old_oid_prefix = '\000' <repeats 64 times>, 
	  new_oid_prefix = '\000' <repeats 64 times>, next = 0x0, threeway_stage = {{
	      hash = '\000' <repeats 31 times>}, {hash = '\000' <repeats 31 times>}, {
	      hash = '\000' <repeats 31 times>}}}

I guess you are able to work out the details with this information. If you need
more input, please Cc: me on replies.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, back to index

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-07 11:06 Regression in v2.23 Uwe Kleine-König
2019-10-07 13:48 ` Thomas Gummerer
2019-10-08  3:11   ` Junio C Hamano
2019-10-08  7:43     ` Johannes Schindelin
2019-10-08  6:24   ` Uwe Kleine-König
2019-10-08  7:44   ` Johannes Schindelin
2019-10-08  7:49     ` Johannes Schindelin
2019-10-08 17:38   ` [PATCH v2] range-diff: don't segfault with mode-only changes Thomas Gummerer
2019-10-08 19:44     ` Johannes Schindelin
2019-10-09  7:42     ` Uwe Kleine-König

git@vger.kernel.org list mirror (unofficial, one of many)

Archives are clonable:
	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Example config snippet for mirrors

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git
	nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git
	nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git
	nntp://news.gmane.io/gmane.comp.version-control.git

 note: .onion URLs require Tor: https://www.torproject.org/

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git