Skip to content

segmentation violation on submodule update #334

Closed
@dealloc

Description

@dealloc

I'm trying to add a submodule to an existing Git repository, using Git I'd do this

git submodule add <url>

After searching through the documentation and scarce examples this is what I came up with

repo, err := git.OpenRepository(".")
if err != nil {
    panic(err)
}

sub, _ := repo.Submodules.Add("https://github.com/dealloc/ioc.git", "ioc", true)
sub.Init(true)
err = sub.Update(true, &git.SubmoduleUpdateOptions{
    &git.CheckoutOpts{},
    &git.FetchOptions{},
    git.CheckoutForce | git.CheckoutUpdateSubmodules,
})
fmt.Println("Submodule:", sub.Name())

If I run this code however the program panics

fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x7f405eb0c728]

runtime stack:
runtime.throw(0x6606d0, 0x2a)
    /usr/lib/go/src/runtime/panic.go:566 +0x95
runtime.sigpanic()
    /usr/lib/go/src/runtime/sigpanic_unix.go:12 +0x2cc

goroutine 1 [syscall, locked to thread]:
runtime.cgocall(0x5dd520, 0xc42004b5f8, 0xc400000000)
    /usr/lib/go/src/runtime/cgocall.go:131 +0x110 fp=0xc42004b5b0 sp=0xc42004b570
github.com/dealloc/governor/vendor/gopkg.in/libgit2/git2go%2ev24._Cfunc_git_submodule_update(0x26acac0, 0xc400000001, 0xc420098c80, 0x0)
    ??:0 +0x4d fp=0xc42004b5f8 sp=0xc42004b5b0
github.com/dealloc/governor/vendor/gopkg.in/libgit2/git2go%2ev24.(*Submodule).Update(0xc42002a0b8, 0xc42007c501, 0xc42004b6e8, 0x0, 0x0)
    /home/dealloc/Documents/Projects/Personal/Go/src/github.com/dealloc/governor/vendor/gopkg.in/libgit2/git2go.v24/submodule.go:322 +0x26b fp=0xc42004b670 sp=0xc42004b5f8
main.addCommand(0xc4200b01b0)
    /home/dealloc/Documents/Projects/Personal/Go/src/github.com/dealloc/governor/add.go:19 +0x182 fp=0xc42004b730 sp=0xc42004b670
runtime.call32(0xc4200152c0, 0x672718, 0xc42002a0a8, 0x800000008)
    /usr/lib/go/src/runtime/asm_amd64.s:479 +0x4c fp=0xc42004b760 sp=0xc42004b730
reflect.Value.call(0x6078a0, 0x672718, 0x13, 0x6575a1, 0x4, 0xc42000cbc0, 0x1, 0x1, 0xd, 0xc42007a650, ...)
    /usr/lib/go/src/reflect/value.go:434 +0x5c8 fp=0xc42004bab0 sp=0xc42004b760
reflect.Value.Call(0x6078a0, 0x672718, 0x13, 0xc42000cbc0, 0x1, 0x1, 0xc42004bc70, 0x670c70, 0x647c20)
    /usr/lib/go/src/reflect/value.go:302 +0xa4 fp=0xc42004bb18 sp=0xc42004bab0
github.com/dealloc/governor/vendor/gopkg.in/ukautz/clif%2ev1.(*Cli).call(0xc420096dc0, 0x6078a0, 0x672718, 0x13, 0xc4200b01b0, 0x4, 0x6576bd, 0x4, 0xc420061601, 0x0)
    /home/dealloc/Documents/Projects/Personal/Go/src/github.com/dealloc/governor/vendor/gopkg.in/ukautz/clif.v1/cli.go:175 +0x73b fp=0xc42004bcc0 sp=0xc42004bb18
github.com/dealloc/governor/vendor/gopkg.in/ukautz/clif%2ev1.(*Cli).Call(0xc420096dc0, 0xc4200b01b0, 0x4, 0x96b6c0, 0x0, 0x0, 0x99c9c8)
    /home/dealloc/Documents/Projects/Personal/Go/src/github.com/dealloc/governor/vendor/gopkg.in/ukautz/clif.v1/cli.go:130 +0xd9 fp=0xc42004bd38 sp=0xc42004bcc0
github.com/dealloc/governor/vendor/gopkg.in/ukautz/clif%2ev1.(*Cli).RunWith(0xc420096dc0, 0xc42000c290, 0x1, 0x1)
    /home/dealloc/Documents/Projects/Personal/Go/src/github.com/dealloc/governor/vendor/gopkg.in/ukautz/clif.v1/cli.go:285 +0x524 fp=0xc42004be90 sp=0xc42004bd38
github.com/dealloc/governor/vendor/gopkg.in/ukautz/clif%2ev1.(*Cli).Run(0xc420096dc0)
    /home/dealloc/Documents/Projects/Personal/Go/src/github.com/dealloc/governor/vendor/gopkg.in/ukautz/clif.v1/cli.go:243 +0x70 fp=0xc42004bec0 sp=0xc42004be90
main.main()
    /home/dealloc/Documents/Projects/Personal/Go/src/github.com/dealloc/governor/main.go:16 +0x22b fp=0xc42004bf48 sp=0xc42004bec0
runtime.main()
    /usr/lib/go/src/runtime/proc.go:183 +0x1f4 fp=0xc42004bfa0 sp=0xc42004bf48
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:2086 +0x1 fp=0xc42004bfa8 sp=0xc42004bfa0

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
    /usr/lib/go/src/runtime/asm_amd64.s:2086 +0x1

goroutine 5 [syscall]:
os/signal.signal_recv(0x0)
    /usr/lib/go/src/runtime/sigqueue.go:116 +0x157
os/signal.loop()
    /usr/lib/go/src/os/signal/signal_unix.go:22 +0x22
created by os/signal.init.1
    /usr/lib/go/src/os/signal/signal_unix.go:28 +0x41

Am I just doing something wrong or is this an actual bug? because I can't figure it out, no matter what I pass to the Update function gives the same result.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions