Hi -
Over on sourceware.org, we run a cgit instance to expose the various
git repos held there. We noticed in the logs a recurrent SEGV of the
cgi-bin/cgit process, looking thusly:
#0 0x000056510452bfae in cgit_mk_refinfo (oid=0x565105f5bc98,
refname=0x565105f5bcca "cluster-2.99.02") at ../shared.c:165
#1 cgit_refs_cb (refname=0x565105f5bcca "cluster-2.99.02", oid=0x565105f5bc98,
flags=<optimized out>, cb_data=0x7fff6dc25fc0)
at ../shared.c:217
#2 0x00005651045d3b44 in do_for_each_repo_ref_iterator (r=0x56510490fc20
<the_repo>, iter=0x565105f7de00,
fn=fn@entry=0x5651045c6cc0 <do_for_each_ref_helper>,
cb_data=cb_data@entry=0x7fff6dc25f80) at refs/iterator.c:418
#3 0x00005651045c9669 in do_for_each_ref (refs=<optimized out>,
prefix=prefix@entry=0x5651046a1d4e "refs/tags/",
fn=<optimized out>, trim=<optimized out>, flags=flags@entry=(unknown: 0),
cb_data=cb_data@entry=0x56510453295b <cgit_print_tags+75>) at refs.c:1498
#4 0x00005651045c96f2 in refs_for_each_ref_in (refs=<optimized out>,
prefix=prefix@entry=0x5651046a1d4e "refs/tags/",
fn=<optimized out>, cb_data=cb_data@entry=0x56510453295b
<cgit_print_tags+75>) at refs.c:1515
#5 0x00005651045ca217 in refs_for_each_tag_ref (cb_data=0x56510453295b
<cgit_print_tags+75>, fn=<optimized out>,
refs=<optimized out>) at refs.c:409
#6 for_each_tag_ref (fn=<optimized out>, cb_data=cb_data@entry=0x7fff6dc25fc0)
at refs.c:414
#7 0x000056510453295b in cgit_print_tags (maxcount=2087820800) at
../ui-refs.c:185
#8 0x0000565104539e1d in cgit_print_summary () at ../ui-summary.c:56
#9 0x0000565104525c1f in process_request () at ../cgit.c:755
(gdb) print *oid
$1 = {hash = '\000' <repeats 31 times>, algo = 1}
It appears as though the oid is null or invalid. That in turns
appears to be because the refs/tags/cluster-2.99.02 file had perms
0440, i.e., unreadable to the cgi process. With world-readability
restored, the code started working again.
- FChE