// +build linux darwin package proc_test import ( "runtime" "syscall" "testing" "time" "github.com/derekparker/delve/pkg/proc" protest "github.com/derekparker/delve/pkg/proc/test" ) func TestIssue419(t *testing.T) { if testBackend == "lldb" && runtime.GOOS == "darwin" { // debugserver bug? return } if testBackend == "rr" { return } // SIGINT directed at the inferior should be passed along not swallowed by delve withTestProcess("issue419", t, func(p proc.Process, fixture protest.Fixture) { _, err := setFunctionBreakpoint(p, "main.main") assertNoError(err, t, "SetBreakpoint()") assertNoError(proc.Continue(p), t, "Continue()") resumeChan := make(chan struct{}) go func() { time.Sleep(500 * time.Millisecond) <-resumeChan if p.Pid() <= 0 { // if we don't stop the inferior the test will never finish p.RequestManualStop() p.Kill() t.Fatalf("Pid is zero or negative: %d", p.Pid()) return } err := syscall.Kill(p.Pid(), syscall.SIGINT) assertNoError(err, t, "syscall.Kill") }() p.ResumeNotify(resumeChan) err = proc.Continue(p) if _, exited := err.(proc.ProcessExitedError); !exited { t.Fatalf("Unexpected error after Continue(): %v\n", err) } }) }