Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

runtime/race: doesn't support the plugin package #24245

Open
tiborvass opened this issue Mar 4, 2018 · 4 comments
Open

runtime/race: doesn't support the plugin package #24245

tiborvass opened this issue Mar 4, 2018 · 4 comments
Labels
compiler/runtime Issues related to the Go compiler and/or runtime. FeatureRequest help wanted NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. RaceDetector
Milestone

Comments

@tiborvass
Copy link

tiborvass commented Mar 4, 2018

What did you do?

// plugin/plugin.go

package main

import (
	"os"
	"time"
)

var counter int

func main() {
	os.Exit(Main())
}

func Main() int {
	go func() {
		counter++
	}()
	time.Sleep(500 * time.Millisecond)
	return counter
}
// plugin-runner.go

package main

import (
	"os"
	"plugin"
)

func main() {
	p, err := plugin.Open(os.Args[1])
	if err != nil {
		panic(err)
	}
	sym, err := p.Lookup("Main")
	if err != nil {
		panic(err)
	}
	f := sym.(func() int)
	_ = f()
}
$ go build -o plugin/plugin.so -race -buildmode=plugin plugin/plugin.go
$ go run -race plugin-runner.go plugin/plugin.so

What did you expect to see?

A DATA RACE output similar to this one:

$ go run -race plugin/plugin.go
==================
WARNING: DATA RACE
Read at 0x00000051da38 by main goroutine:
  main.Main()
      /go/src/github.com/tiborvass/goissues/plugin/race-nodetect/plugin/plugin.go:19 +0x5f
  main.main()
      /go/src/github.com/tiborvass/goissues/plugin/race-nodetect/plugin/plugin.go:11 +0x2f

Previous write at 0x00000051da38 by goroutine 6:
  main.Main.func1()
      /go/src/github.com/tiborvass/goissues/plugin/race-nodetect/plugin/plugin.go:16 +0x56

Goroutine 6 (finished) created at:
  main.Main()
      /go/src/github.com/tiborvass/goissues/plugin/race-nodetect/plugin/plugin.go:15 +0x42
  main.main()
      /go/src/github.com/tiborvass/goissues/plugin/race-nodetect/plugin/plugin.go:11 +0x2f
==================
exit status 1

What did you see instead?

No output. I reproduced it 100% on both linux and darwin.

System details

go version go1.10 linux/amd64
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/go"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build269754766=/tmp/go-build -gno-record-gcc-switches"
GOROOT/bin/go version: go version go1.10 linux/amd64
GOROOT/bin/go tool compile -V: compile version go1.10
uname -sr: Linux 4.9.75-linuxkit-aufs
/lib/x86_64-linux-gnu/libc.so.6: GNU C Library (Debian GLIBC 2.24-11+deb9u1) stable release version 2.24, by Roland McGrath et al.
@mvdan
Copy link
Member

mvdan commented Mar 4, 2018

/cc @dvyukov

@mvdan mvdan added the NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. label Mar 4, 2018
@bradfitz bradfitz changed the title Race detector does not detect data races in a loaded plugin runtime/race: doesn't support the plugin package Mar 5, 2018
@bradfitz bradfitz added this to the Unplanned milestone Mar 5, 2018
@szuecs
Copy link

szuecs commented Feb 26, 2019

Sounds like an issue to our production application, which enables users to build their own Go plugins to enhance the application.

It would be nice if this would get a fix. Is this complicated or just not prioritized yet, because of plugin is not first class anyhow?

@ianlancetaylor
Copy link
Contributor

ianlancetaylor commented Feb 26, 2019

It's not prioritized. It would help if somebody could figure out what the actual problem is. It may be obvious, it may not; I don't know.

@itsmontoya
Copy link

itsmontoya commented May 17, 2020

I've tested this by building the core app with --race, the plugin built with --race, and both built with --race and I've encountered no success. If anyone on the go team needs some examples. The vroomy team can provide some! :)

@gopherbot gopherbot added the compiler/runtime Issues related to the Go compiler and/or runtime. label Jul 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler/runtime Issues related to the Go compiler and/or runtime. FeatureRequest help wanted NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. RaceDetector
Projects
None yet
Development

No branches or pull requests

8 participants