Closed
Description
If I try to SIGSTOP the current process, that seems to only block one thread, while
other threads continue. I also tried signaling the session leader, same results.
This reproduces the problem:
$ cat sigstop.go
package main
import (
"syscall"
"fmt"
)
func main() {
fmt.Println("one")
pid := syscall.Getpid()
err := syscall.Kill(pid, syscall.SIGSTOP)
if err != nil {
panic("bleh")
}
fmt.Println("two")
}
$ go build sigstop.go
$ ./sigstop
one
two
What is the expected output?
Compare to
$ cat sigstop.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
int main(void) {
pid_t pid;
printf("one\n");
pid = getpid();
kill(pid, SIGSTOP);
printf("two\n");
}
$ gcc sigstop.c
$ ./a.out
one
[1]+ Stopped ./a.out
$ fg
./a.out
two
$
Which compiler are you using (5g, 6g, 8g, gccgo)?
6g via "go build"
Which operating system are you using?
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.1 LTS
Release: 12.04
Codename: precise
Which version are you using? (run 'go version')
$ go version
go version go1