go-logging icon indicating copy to clipboard operation
go-logging copied to clipboard

race test failed

Open hilyjiang opened this issue 10 years ago • 0 comments

package main

import (
        "os"
        "time"

        "github.com/op/go-logging"
)

func main() {
        go func() {
                test("test1")
        }()

        test("test2")

        time.Sleep(time.Second)
}

func test(name string) {
        backend := logging.NewLogBackend(os.Stdout, "", 0)
        leveledBackend := logging.AddModuleLevel(backend)
        leveledBackend.SetLevel(logging.DEBUG, name)
        logging.SetBackend(leveledBackend)

        logger := logging.MustGetLogger(name)
        logger.Debug("debug")
}

run go run -race main.go, DATA RACE detected:

# go run -race main.go 
debug
==================
WARNING: DATA RACE
Write by goroutine 6:
  github.com/op/go-logging.SetBackend()
      /root/godev/src/github.com/op/go-logging/backend.go:26 +0x24c
  main.test()
      /root/godev/src/logging/main.go:24 +0x522
  main.main.func1()
      /root/godev/src/logging/main.go:12 +0x39

Previous write by main goroutine:
  github.com/op/go-logging.SetBackend()
      /root/godev/src/github.com/op/go-logging/backend.go:26 +0x24c
  main.test()
      /root/godev/src/logging/main.go:24 +0x522
  main.main()
      /root/godev/src/logging/main.go:15 +0x51

Goroutine 6 (running) created at:
  main.main()
      /root/godev/src/logging/main.go:13 +0x38
==================
debug
Found 1 data race(s)
exit status 66

hilyjiang avatar Dec 07 '15 16:12 hilyjiang