Skip to content

Datarace on context cancellation #728

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

Closed
mrsinham opened this issue Jan 3, 2018 · 5 comments
Closed

Datarace on context cancellation #728

mrsinham opened this issue Jan 3, 2018 · 5 comments

Comments

@mrsinham
Copy link
Contributor

mrsinham commented Jan 3, 2018

Issue description

When using context cancellation on heavy request and parallel queries, got a datarace.

Trace

▶ ./launch_withrace.sh
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
==================
WARNING: DATA RACE
Write at 0x00c42010e740 by goroutine 71:
  internal/race.WriteRange()
      /home/julien/programmation/gobin/go/src/internal/race/race.go:49 +0x42
  syscall.Read()
      /home/julien/programmation/gobin/go/src/syscall/syscall_unix.go:165 +0x9a
  net.(*netFD).Read()
      /home/julien/programmation/gobin/go/src/net/fd_unix.go:246 +0x185
  net.(*conn).Read()
      /home/julien/programmation/gobin/go/src/net/net.go:181 +0x96
  net.(*TCPConn).Read()
      <autogenerated>:72 +0x72
  github.com/go-sql-driver/mysql.(*buffer).fill()
      /home/julien/programmation/go/src/github.com/go-sql-driver/mysql/buffer.go:68 +0x19a
  github.com/go-sql-driver/mysql.(*buffer).readNext()
      /home/julien/programmation/go/src/github.com/go-sql-driver/mysql/buffer.go:97 +0x1dd
  github.com/go-sql-driver/mysql.(*mysqlConn).readPacket()
      /home/julien/programmation/go/src/github.com/go-sql-driver/mysql/packets.go:67 +0x1ff
  github.com/go-sql-driver/mysql.(*mysqlConn).readUntilEOF()
      /home/julien/programmation/go/src/github.com/go-sql-driver/mysql/packets.go:800 +0x50
  github.com/go-sql-driver/mysql.(*mysqlRows).Close()
      /home/julien/programmation/go/src/github.com/go-sql-driver/mysql/rows.go:119 +0x1a0
  github.com/go-sql-driver/mysql.(*textRows).Close()
      <autogenerated>:8 +0x50
  database/sql.(*Rows).close()
      /home/julien/programmation/gobin/go/src/database/sql/sql.go:2434 +0x162
  database/sql.(*Rows).awaitDone()
      /home/julien/programmation/gobin/go/src/database/sql/sql.go:2122 +0x9b

Previous read at 0x00c42010e747 by goroutine 18:
  runtime.slicebytetostring()
      /home/julien/programmation/gobin/go/src/runtime/string.go:72 +0x0
  database/sql.convertAssign()
      /home/julien/programmation/gobin/go/src/database/sql/convert.go:149 +0x2294
  database/sql.(*Rows).Scan()
      /home/julien/programmation/gobin/go/src/database/sql/sql.go:2401 +0x281
  main.main.func2()
      /home/julien/programmation/go/src/github.com/mrsinham/mysqlrace/test.go:45 +0x28f

Goroutine 71 (running) created at:
  database/sql.(*Rows).initContextClose()
      /home/julien/programmation/gobin/go/src/database/sql/sql.go:2116 +0xc9
  database/sql.(*DB).queryConn()
      /home/julien/programmation/gobin/go/src/database/sql/sql.go:1278 +0xa4a
  database/sql.(*DB).query()
      /home/julien/programmation/gobin/go/src/database/sql/sql.go:1250 +0x187
  database/sql.(*DB).QueryContext()
      /home/julien/programmation/gobin/go/src/database/sql/sql.go:1227 +0xc8
  main.main.func2()
      /home/julien/programmation/go/src/github.com/mrsinham/mysqlrace/test.go:35 +0xc7

Goroutine 18 (running) created at:
  main.main()
      /home/julien/programmation/go/src/github.com/mrsinham/mysqlrace/test.go:55 +0x1c3
==================
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 sql: Rows are closed
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 sql: Rows are closed
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
2018/01/03 14:22:41 context canceled
Found 1 data race(s)

To reproduce

Please use the demo : https://github.com/mrsinham/mysqlrace (execute until you have the datarace, a bit difficult to trigger)

Early analysis

The connection to MySQL use a buffer that is not protected against dataraces.
When the context sends a Close() order via the context cancelling and when the buffer is still providing data to the rows.Scan() method, they read/write on the same []byte at the same time (using database/sql.convertAssign), triggering the datarace.

Configuration

Driver version (or git SHA): 9181e3a

Go version: go version go1.8.3 linux/amd64

Server version: MariaDB 10.2

Server OS: Ubuntu 17.10

@methane
Copy link
Member

methane commented Jan 4, 2018

Use go 1.9.2 or later.
golang/go#21117 (comment)

@mrsinham
Copy link
Contributor Author

mrsinham commented Jan 8, 2018

ok, thx.

@mrsinham mrsinham closed this as completed Jan 8, 2018
@DoctorQ
Copy link

DoctorQ commented Dec 3, 2018

1.9.2 still appear

==================
WARNING: DATA RACE
Write at 0x00c4215383f8 by goroutine 234:
  internal/race.WriteRange()
      /home/doctorq/soft/sf-go/src/internal/race/race.go:49 +0x42
  syscall.Read()
      /home/doctorq/soft/sf-go/src/syscall/syscall_unix.go:165 +0x9a
  internal/poll.(*FD).Read()
      /home/doctorq/soft/sf-go/src/internal/poll/fd_unix.go:122 +0x1a0
  net.(*netFD).Read()
      /home/doctorq/soft/sf-go/src/net/fd_unix.go:202 +0x65
  net.(*conn).Read()
      /home/doctorq/soft/sf-go/src/net/net.go:176 +0x87
  net.(*TCPConn).Read()
      <autogenerated>:1 +0x69
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql.(*buffer).fill()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql/buffer.go:68 +0x1a7
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql.(*buffer).readNext()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql/buffer.go:97 +0x1dc
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql.(*mysqlConn).readPacket()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql/packets.go:67 +0x24f
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql.(*mysqlConn).readUntilEOF()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql/packets.go:786 +0x45
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql.(*mysqlRows).Close()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql/rows.go:116 +0x191
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/go-sql-driver/mysql.(*textRows).Close()
      <autogenerated>:1 +0x43
  database/sql.(*Rows).close.func1()
      /home/doctorq/soft/sf-go/src/database/sql/sql.go:2755 +0x6e
  database/sql.withLock()
      /home/doctorq/soft/sf-go/src/database/sql/sql.go:2867 +0x76
  database/sql.(*Rows).close()
      /home/doctorq/soft/sf-go/src/database/sql/sql.go:2754 +0x1ca
  database/sql.(*Rows).awaitDone()
      /home/doctorq/soft/sf-go/src/database/sql/sql.go:2430 +0x14c

Previous read at 0x00c4215383ff by goroutine 33:
  runtime.slicebytetostring()
      /home/doctorq/soft/sf-go/src/runtime/string.go:72 +0x0
  gitlab.sftcwl.com/dispatch/data/handler/db.(*MysqlAdapter).ParserRows()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/db/mysql_adapter.go:102 +0x38e
  gitlab.sftcwl.com/dispatch/data/handler/db.(*MysqlAdapter).OrderQuery()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/db/mysql_adapter.go:73 +0x400
  gitlab.sftcwl.com/dispatch/data/handler/db.(*MysqlProxy).GetOrderInfoByOrderId()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/db/mysql_proxy.go:111 +0x1ee0
  gitlab.sftcwl.com/dispatch/data/handler/proxy.(*OrderProxy).GetOrderByOrderId()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/proxy/order.go:32 +0xab
  gitlab.sftcwl.com/dispatch/data/handler/proxy.(*OrderProxy).GetUndistributedOrder()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/proxy/order.go:82 +0x177
  gitlab.sftcwl.com/dispatch/data/handler/service.(*GetOrder).Access()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/service/get_order.go:35 +0x4a1
  gitlab.sftcwl.com/dispatch/data/handler.(*DataServiceHandler).GetOrderDetail()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/DataService_handler.go:45 +0xc7
  gitlab.sftcwl.com/dispatch/data/vendor/gitlab.sftcwl.com/dispatch/util/proto._DataService_GetOrderDetail_Handler.func1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/gitlab.sftcwl.com/dispatch/util/proto/data.pb.go:2725 +0xa1
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:31 +0x2c7
  gitlab.sftcwl.com/dispatch/data/framework/interceptor/perfcounter.UnaryServerInterceptor.func1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/framework/interceptor/perfcounter/perfcounter.go:58 +0x142
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:34 +0x1ca
  gitlab.sftcwl.com/dispatch/data/framework/interceptor/header.UnaryServerInterceptor.func1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/framework/interceptor/header/header.go:74 +0x360
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:39 +0x367
  gitlab.sftcwl.com/dispatch/data/vendor/gitlab.sftcwl.com/dispatch/util/proto._DataService_GetOrderDetail_Handler()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/gitlab.sftcwl.com/dispatch/util/proto/data.pb.go:2727 +0x1ec
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc.(*Server).processUnaryRPC()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/server.go:1026 +0xbb7
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc.(*Server).handleStream()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/server.go:1252 +0x14a6
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc.(*Server).serveStreams.func1.1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/server.go:699 +0xac

Goroutine 234 (running) created at:
  database/sql.(*Rows).initContextClose()
      /home/doctorq/soft/sf-go/src/database/sql/sql.go:2414 +0xdd
  database/sql.(*DB).queryDC()
      /home/doctorq/soft/sf-go/src/database/sql/sql.go:1334 +0xb7f
  database/sql.(*DB).query()
      /home/doctorq/soft/sf-go/src/database/sql/sql.go:1304 +0x193
  database/sql.(*DB).QueryContext()
      /home/doctorq/soft/sf-go/src/database/sql/sql.go:1281 +0xe2
  gitlab.sftcwl.com/dispatch/data/vendor/gitlab.sftcwl.com/golang-lib-inner/xmysql.(*Client).QueryContext()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/gitlab.sftcwl.com/golang-lib-inner/xmysql/client.go:190 +0xb1
  gitlab.sftcwl.com/dispatch/data/handler/db.(*MysqlAdapter).OrderQuery()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/db/mysql_adapter.go:61 +0x1bc
  gitlab.sftcwl.com/dispatch/data/handler/db.(*MysqlProxy).GetOrderInfoByOrderId()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/db/mysql_proxy.go:111 +0x1ee0
  gitlab.sftcwl.com/dispatch/data/handler/proxy.(*OrderProxy).GetOrderByOrderId()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/proxy/order.go:32 +0xab
  gitlab.sftcwl.com/dispatch/data/handler/proxy.(*OrderProxy).GetUndistributedOrder()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/proxy/order.go:82 +0x177
  gitlab.sftcwl.com/dispatch/data/handler/service.(*GetOrder).Access()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/service/get_order.go:35 +0x4a1
  gitlab.sftcwl.com/dispatch/data/handler.(*DataServiceHandler).GetOrderDetail()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/handler/DataService_handler.go:45 +0xc7
  gitlab.sftcwl.com/dispatch/data/vendor/gitlab.sftcwl.com/dispatch/util/proto._DataService_GetOrderDetail_Handler.func1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/gitlab.sftcwl.com/dispatch/util/proto/data.pb.go:2725 +0xa1
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:31 +0x2c7
  gitlab.sftcwl.com/dispatch/data/framework/interceptor/perfcounter.UnaryServerInterceptor.func1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/framework/interceptor/perfcounter/perfcounter.go:58 +0x142
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1.1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:34 +0x1ca
  gitlab.sftcwl.com/dispatch/data/framework/interceptor/header.UnaryServerInterceptor.func1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/framework/interceptor/header/header.go:74 +0x360
  gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware.ChainUnaryServer.func1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:39 +0x367
  gitlab.sftcwl.com/dispatch/data/vendor/gitlab.sftcwl.com/dispatch/util/proto._DataService_GetOrderDetail_Handler()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/gitlab.sftcwl.com/dispatch/util/proto/data.pb.go:2727 +0x1ec
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc.(*Server).processUnaryRPC()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/server.go:1026 +0xbb7
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc.(*Server).handleStream()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/server.go:1252 +0x14a6
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc.(*Server).serveStreams.func1.1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/server.go:699 +0xac

Goroutine 33 (running) created at:
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc.(*Server).serveStreams.func1()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/server.go:697 +0xb8
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/internal/transport.(*http2Server).operateHeaders()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/internal/transport/http2_server.go:432 +0x14f9
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/internal/transport.(*http2Server).HandleStreams()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/internal/transport/http2_server.go:472 +0x8da
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc.(*Server).serveStreams()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/server.go:695 +0x183
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc.(*Server).handleRawConn.func2()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/server.go:649 +0x53
  gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc.(*Server).handleRawConn.func3()
      /home/doctorq/go-dev/src/gitlab.sftcwl.com/dispatch/data/vendor/google.golang.org/grpc/server.go:657 +0x34
==================

@methane
Copy link
Member

methane commented Dec 3, 2018

@DoctorQ

  1. Same error (data race) doesn't mean same issue. Provide how can we reproduce it. If you can not provide it, provide detailed information about your application as possible.
  2. Read database/sql: add extra locking when calling driver golang/go#21117. It was reverted and fixed in 1.10, not 1.9.2. When reporting issue, try latest stable version.

@DoctorQ
Copy link

DoctorQ commented Dec 3, 2018

@DoctorQ

  1. Same error (data race) doesn't mean same issue. Provide how can we reproduce it. If you can not provide it, provide detailed information about your application as possible.
  2. Read golang/go#21117. It was reverted and fixed in 1.10, not 1.9.2. When reporting issue, try latest stable version.

902

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants