[go: up one dir, main page]

Reproducible segseg when listing descendents of an orphaned commit

Hi

reposurgeon 4.32 supporting bk bzr cvs darcs git hg mtn rcs src svn

I am helping to convert the rather messy LuaTeX subversion repository to git. I always get a crash when doing the following:

reposurgeon% =O list
...
 25183 2013-11-25T15:36:25Z :25182 5e0054 <4652> Added experimental branch....
...
reposurgeon% @dsc(25183) list
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x79e7f0]

goroutine 1 [running]:
main.main.func1()
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/reposurgeon.go:7731 +0x13f
panic({0x88d4c0, 0xd006d0})
        /usr/lib/go/src/runtime/panic.go:884 +0x212
main.catch({0x8f4857?, 0x8?}, {0x88d4c0, 0xd006d0?})
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/inner.go:128 +0x139
main.(*Reposurgeon).PreCmd.func1(0xc0045bb498)
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/reposurgeon.go:577 +0x45
panic({0x88d4c0, 0xd006d0})
        /usr/lib/go/src/runtime/panic.go:884 +0x212
main.(*Repository).eventToIndex(0xc000354380, {0x0, 0x0})
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/inner.go:5039 +0x30
main.(*Repository).accumulateCommits(0x0?, {0xc0045bb320?}, 0x94c7d8, 0x1)
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/inner.go:8766 +0x374
main.(*Reposurgeon).accumulateCommits(...)
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/reposurgeon.go:685
main.(*Reposurgeon).dscHandler(0xc01a44a650?, {0xc0038d0038?, 0x1?}, {0xc0045bb350?})
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/selection.go:781 +0x2c
main.(*Reposurgeon).functions.func2({0x9e1e68?, 0xc000110040?}, {0xd5a3?})
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/selection.go:762 +0x33
main.(*SelectionParser).parseFuncall.func1({0x9e1e68, 0xc000110040}, {0xc000110040?})
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/selection.go:1320 +0x4b
main.(*SelectionParser).evaluate(0x0?, 0xc00d05a120, {0x9e1e68, 0xc000110040})
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/selection.go:885 +0x56
main.(*Reposurgeon).evalSelectionSet(0xc000110000?, 0xc001e8a018?, 0x10?)
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/selection.go:240 +0x8b
main.(*Reposurgeon).PreCmd(0xc000110000, {0xc001e8a018, 0x10})
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/reposurgeon.go:592 +0x2e5
gitlab.com/ianbruene/kommandant.(*Kmdt).bind.func5({0xc0183ce180?, 0x2d?}, {0xc001e8a018, 0x10})
        /home/norbert/go/pkg/mod/gitlab.com/ianbruene/kommandant@v0.6.2/kommandant.go:350 +0x57
gitlab.com/ianbruene/kommandant.(*Kmdt).PreCmd(0xc0001162c0, {0x9e2690, 0xc0001ec630}, {0xc001e8a018, 0x10})
        /home/norbert/go/pkg/mod/gitlab.com/ianbruene/kommandant@v0.6.2/kommandant.go:213 +0x111
gitlab.com/ianbruene/kommandant.(*Kmdt).CmdLoop(0xc0001162c0, {0x9e2690, 0xc0001ec630}, {0x0, 0x0})
        /home/norbert/go/pkg/mod/gitlab.com/ianbruene/kommandant@v0.6.2/kommandant.go:635 +0x796
main.main()
        /home/norbert/.cache/yay/reposurgeon/src/reposurgeon-4.32/surgeon/reposurgeon.go:7762 +0x552

The luatex.svn stream is a bit big (9G) so no way to attach it. The conversion started from here:

repotool initialize luatex svn git
sed -i -e 's!^REMOTE_URL.*$!REMOTE_URL = https://serveur-svn.lri.fr/svn/modhel/luatex!' Makefile

# this one takes a lot of time
make luatex-mirror

Followed by

read  <luatex.svn
authors read <luatex.map
sourcetype svn
prefer git

(I can provide the luatex.map on demand)

Thanks

Norbert

(BTW, is there an easy way to find on which branch a certain ID is on? For split commits I often have to guess.)