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

调用数据查询接口偶尔会出现这个错误,导致程序崩溃 #58

Closed
DarkGodOne opened this issue Nov 18, 2021 · 18 comments
Closed

Comments

@DarkGodOne
Copy link

从异常日志看是调用Rows.Next()方法遍历数据的时候出错了,不清楚是为什么?

taos服务端没有任何异常日志,go异常日志如下,
goroutine 579 [syscall]:
github.com/taosdata/driver-go/v2/wrapper._Cfunc_taos_fetch_block(0x15a7f075c50, 0xc000f98038, 0x0)
_cgo_gotypes.go:257 +0x4f
github.com/taosdata/driver-go/v2/wrapper.TaosFetchBlock.func1(0x15a7f075c50, 0xc000f98038, 0xc000000000)
D:/works/gospace/pkg/mod/github.com/taosdata/driver-go/v2@v2.0.0/wrapper/taosc.go:92 +0xaa
github.com/taosdata/driver-go/v2/wrapper.TaosFetchBlock(0x15a7f075c50, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/taosdata/driver-go/v2@v2.0.0/wrapper/taosc.go:92 +0x85
github.com/taosdata/driver-go/v2/taosSql.(*rows).taosFetchBlock(0xc000f6c270)
D:/works/gospace/pkg/mod/github.com/taosdata/driver-go/v2@v2.0.0/taosSql/rows.go:75 +0x4a
github.com/taosdata/driver-go/v2/taosSql.(*rows).Next(0xc000f6c270, 0xc000f8bc80, 0x8, 0x8, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/taosdata/driver-go/v2@v2.0.0/taosSql/rows.go:53 +0x356
database/sql.(*Rows).nextLocked(0xc000f8bc00, 0x100000000)
C:/Program Files/Go/src/database/sql/sql.go:2865 +0x182
database/sql.(*Rows).Next.func1()
C:/Program Files/Go/src/database/sql/sql.go:2843 +0x4d
database/sql.withLock(0x18c86b0, 0xc000f8bc30, 0xc000d06828)
C:/Program Files/Go/src/database/sql/sql.go:3294 +0x7e
database/sql.(*Rows).Next(0xc000f8bc00, 0xc00010e300)
C:/Program Files/Go/src/database/sql/sql.go:2842 +0xd2
iotStation/database.SelectBalancevalveInterval(0xc00120ca00, 0x138b, 0x0, 0x0, 0x0, 0xc0000ae360, 0x13, 0x0, 0x0, 0xc00015a197, ...)
D:/works/zoolon_iot/热力项目/iotstation/database/balancevalve.go:203 +0xba6
iotStation/northapi.(*HTTPServer).getGridData(0xc00002e1c0, 0x18d4078, 0xc00069a000, 0x0, 0x0)
D:/works/zoolon_iot/热力项目/iotstation/northapi/dashboard.go:265 +0xfbd
github.com/labstack/echo/v4/middleware.KeyAuthWithConfig.func1.1(0x18d4078, 0xc00069a000, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/middleware/key_auth.go:125 +0x57c
github.com/labstack/echo/v4.(*Echo).add.func1(0x18d4078, 0xc00069a000, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:552 +0xaa
github.com/labstack/echo/v4/middleware.CORSWithConfig.func1.1(0x18d4078, 0xc00069a000, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/middleware/cors.go:118 +0x447
github.com/labstack/echo/v4/middleware.RecoverWithConfig.func1.1(0x18d4078, 0xc00069a000, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/middleware/recover.go:98 +0x1a3
github.com/labstack/echo/v4.(*Echo).ServeHTTP(0xc00017c240, 0x18cc830, 0xc000172028, 0xc000670300)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:662 +0x1e2
net/http.serverHandler.ServeHTTP(0xc000c281c0, 0x18cc830, 0xc000172028, 0xc000670300)
C:/Program Files/Go/src/net/http/server.go:2887 +0x22b
net/http.initALPNRequest.ServeHTTP(0x18cd460, 0xc0000c5230, 0xc000016a80, 0xc000c281c0, 0x18cc830, 0xc000172028, 0xc000670300)
C:/Program Files/Go/src/net/http/server.go:3459 +0x149
net/http.(*http2serverConn).runHandler(0xc00064c780, 0xc000172028, 0xc000670300, 0xc0011c6ed0)
C:/Program Files/Go/src/net/http/h2_bundle.go:5723 +0xc5
created by net/http.(*http2serverConn).processHeaders
C:/Program Files/Go/src/net/http/h2_bundle.go:5453 +0x95b

goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc000694088)
C:/Program Files/Go/src/runtime/sema.go:56 +0x49
sync.(*WaitGroup).Wait(0xc000694080)
C:/Program Files/Go/src/sync/waitgroup.go:130 +0xd7
main.main()
D:/works/zoolon_iot/热力项目/iotstation/main.go:53 +0x4fe

goroutine 9 [IO wait]:
internal/poll.runtime_pollWait(0x15a7d3c6048, 0x72, 0xc00015ccc8)
C:/Program Files/Go/src/runtime/netpoll.go:222 +0x65
internal/poll.(*pollDesc).wait(0xc00015ce38, 0x72, 0xde8500, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:87 +0xa5
internal/poll.execIO(0xc00015cc98, 0xc000d0b2a8, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2ad
internal/poll.(*FD).acceptOne(0xc00015cc80, 0x2b4, 0xc000d100f0, 0x2, 0x2, 0xc00015cc98, 0x0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:810 +0xed
internal/poll.(*FD).Accept(0xc00015cc80, 0xc000fb36a0, 0x0, 0x0, 0x0, 0x0, 0x100000000000000, 0x0, 0x0, 0x0, ...)
C:/Program Files/Go/src/internal/poll/fd_windows.go:844 +0x3ca
net.(*netFD).accept(0xc00015cc80, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/fd_windows.go:139 +0xeb
net.(*TCPListener).accept(0xc000c22330, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/tcpsock_posix.go:139 +0x68
net.(*TCPListener).AcceptTCP(0xc000c22330, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/tcpsock.go:248 +0x85
github.com/labstack/echo/v4.tcpKeepAliveListener.Accept(0xc000c22330, 0x0, 0x0, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:971 +0x59
crypto/tls.(*listener).Accept(0xc000c22348, 0x0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/crypto/tls/tls.go:67 +0x6b
net/http.(*Server).Serve(0xc000c281c0, 0x18cbf30, 0xc000c22348, 0x0, 0x0)
C:/Program Files/Go/src/net/http/server.go:2981 +0x43a
github.com/labstack/echo/v4.(*Echo).StartTLS(0xc00017c240, 0xc0000ae547, 0xd, 0x178a320, 0x18ba490, 0x178a320, 0x18ba4a0, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:713 +0x648
iotStation/northapi.(*HTTPServer).webThread(0xc00002e1c0)
D:/works/zoolon_iot/热力项目/iotstation/northapi/httpServer.go:106 +0x208
created by iotStation/northapi.(*HTTPServer).Httpinit
D:/works/zoolon_iot/热力项目/iotstation/northapi/httpServer.go:100 +0x12cf

goroutine 50 [syscall]:
os/signal.signal_recv(0x0)
C:/Program Files/Go/src/runtime/sigqueue.go:168 +0xaf
os/signal.loop()
C:/Program Files/Go/src/os/signal/signal_unix.go:23 +0x2d
created by os/signal.Notify.func1.1
C:/Program Files/Go/src/os/signal/signal.go:151 +0x48

goroutine 51 [chan receive]:
main.handleCtrlC(0xc000656120, 0xc000694080)
D:/works/zoolon_iot/热力项目/iotstation/main.go:18 +0xae
created by main.main
D:/works/zoolon_iot/热力项目/iotstation/main.go:37 +0x1dc

goroutine 21 [select]:
iotStation/southapi.(*CeebicIot).workThread(0x1b3b080, 0x0)
D:/works/zoolon_iot/热力项目/iotstation/southapi/ceebic.go:294 +0x528
created by iotStation/southapi.(*CeebicIot).StartUp
D:/works/zoolon_iot/热力项目/iotstation/southapi/ceebic.go:452 +0xab4

goroutine 22 [IO wait]:
internal/poll.runtime_pollWait(0x15a7d3c6130, 0x72, 0xc00008e7c8)
C:/Program Files/Go/src/runtime/netpoll.go:222 +0x65
internal/poll.(*pollDesc).wait(0xc00008e938, 0x72, 0xde8500, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:87 +0xa5
internal/poll.execIO(0xc00008e798, 0xc0001774e0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2ad
internal/poll.(*FD).acceptOne(0xc00008e780, 0x2a4, 0xc000c4a000, 0x2, 0x2, 0xc00008e798, 0x0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:810 +0xed
internal/poll.(*FD).Accept(0xc00008e780, 0xc0001778d8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
C:/Program Files/Go/src/internal/poll/fd_windows.go:844 +0x3ca
net.(*netFD).accept(0xc00008e780, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/fd_windows.go:139 +0xeb
net.(*TCPListener).accept(0xc0000a09d8, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/tcpsock_posix.go:139 +0x68
net.(*TCPListener).AcceptTCP(0xc0000a09d8, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/tcpsock.go:248 +0x85
github.com/labstack/echo/v4.tcpKeepAliveListener.Accept(0xc0000a09d8, 0x0, 0x0, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:971 +0x59
net/http.(*Server).Serve(0xc0006c4000, 0x18cc1a0, 0xc0000d8020, 0x0, 0x0)
C:/Program Files/Go/src/net/http/server.go:2981 +0x43a
github.com/labstack/echo/v4.(*Echo).Start(0xc00017c000, 0xc0000ae58d, 0xd, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:679 +0x187
iotStation/southapi.(*CeebicIot).StartUp.func1(0x1b3b080, 0xc0000ae58d, 0xd)
D:/works/zoolon_iot/热力项目/iotstation/southapi/ceebic.go:459 +0x1aa
created by iotStation/southapi.(*CeebicIot).StartUp
D:/works/zoolon_iot/热力项目/iotstation/southapi/ceebic.go:456 +0xb29

goroutine 10 [chan receive]:
github.com/natefinch/lumberjack.(*Logger).millRun(0xc000120480)
D:/works/gospace/pkg/mod/github.com/natefinch/lumberjack@v2.0.0+incompatible/lumberjack.go:379 +0x4e
created by github.com/natefinch/lumberjack.(*Logger).mill.func1
D:/works/gospace/pkg/mod/github.com/natefinch/lumberjack@v2.0.0+incompatible/lumberjack.go:390 +0x92

goroutine 11 [select]:
database/sql.(*DB).connectionOpener(0xc0006904e0, 0x18cd3b8, 0xc00002e300)
C:/Program Files/Go/src/database/sql/sql.go:1133 +0xd7
created by database/sql.OpenDB
C:/Program Files/Go/src/database/sql/sql.go:740 +0x265

goroutine 12 [select]:
net/http.(*http2serverConn).serve(0xc00064c780)
C:/Program Files/Go/src/net/http/h2_bundle.go:4428 +0xc7f
net/http.(*http2Server).ServeConn(0xc00002e340, 0x18d0ff8, 0xc000016a80, 0xc0006697c8)
C:/Program Files/Go/src/net/http/h2_bundle.go:4038 +0xdeb
net/http.http2ConfigureServer.func1(0xc000c281c0, 0xc000016a80, 0x18c55e0, 0xc000c26200)
C:/Program Files/Go/src/net/http/h2_bundle.go:3864 +0x1d1
net/http.(*conn).serve(0xc00006c320, 0x18cd460, 0xc0000c5230)
C:/Program Files/Go/src/net/http/server.go:1861 +0xb3c
created by net/http.(*Server).Serve
C:/Program Files/Go/src/net/http/server.go:3013 +0x974

goroutine 39 [IO wait]:
internal/poll.runtime_pollWait(0x15a7d3c5f60, 0x72, 0xc00015cf18)
C:/Program Files/Go/src/runtime/netpoll.go:222 +0x65
internal/poll.(*pollDesc).wait(0xc00015d0b8, 0x72, 0xde8500, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:87 +0xa5
internal/poll.execIO(0xc00015cf18, 0x188cf30, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2ad
internal/poll.(*FD).Read(0xc00015cf00, 0xc000d8c700, 0x664, 0x664, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:441 +0x56d
net.(*netFD).Read(0xc00015cf00, 0xc000d8c700, 0x664, 0x664, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/fd_posix.go:55 +0x85
net.(*conn).Read(0xc0001722a0, 0xc000d8c700, 0x664, 0x664, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/net.go:183 +0xbc
crypto/tls.(*atLeastReader).Read(0xc0011c6ee8, 0xc000d8c700, 0x664, 0x664, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/crypto/tls/conn.go:776 +0xd2
bytes.(*Buffer).ReadFrom(0xc000016cf8, 0x18c3bc0, 0xc0011c6ee8, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/bytes/buffer.go:204 +0x166
crypto/tls.(*Conn).readFromUntil(0xc000016a80, 0x15a7d4b28b8, 0xc0001722a0, 0x5, 0x0, 0x0)
C:/Program Files/Go/src/crypto/tls/conn.go:798 +0x197
crypto/tls.(*Conn).readRecordOrCCS(0xc000016a80, 0xc000016a00, 0x0, 0x0)
C:/Program Files/Go/src/crypto/tls/conn.go:605 +0x245
crypto/tls.(*Conn).readRecord(0xc000016a80, 0x0, 0x0)
C:/Program Files/Go/src/crypto/tls/conn.go:573 +0x3f
crypto/tls.(*Conn).Read(0xc000016a80, 0xc0006c42d8, 0x9, 0x9, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/crypto/tls/conn.go:1276 +0x1db
io.ReadAtLeast(0x15a7d330c98, 0xc000016a80, 0xc0006c42d8, 0x9, 0x9, 0x9, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/io/io.go:328 +0x164
io.ReadFull(0x15a7d330c98, 0xc000016a80, 0xc0006c42d8, 0x9, 0x9, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/io/io.go:347 +0xb1
net/http.http2readFrameHeader(0xc0006c42d8, 0x9, 0x9, 0x15a7d330c98, 0xc000016a80, 0x0, 0xc000000000, 0x0, 0x0)
C:/Program Files/Go/src/net/http/h2_bundle.go:1477 +0xd3
net/http.(*http2Framer).ReadFrame(0xc0006c42a0, 0x0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/http/h2_bundle.go:1735 +0x14e
net/http.(*http2serverConn).readFrames(0xc00064c780)
C:/Program Files/Go/src/net/http/h2_bundle.go:4314 +0xf9
created by net/http.(*http2serverConn).serve
C:/Program Files/Go/src/net/http/h2_bundle.go:4420 +0x9bf

goroutine 573 [select]:
database/sql.(*DB).connectionOpener(0xc000c2a5b0, 0x18cd3b8, 0xc000c8b980)
C:/Program Files/Go/src/database/sql/sql.go:1133 +0xd7
created by database/sql.OpenDB
C:/Program Files/Go/src/database/sql/sql.go:740 +0x265

goroutine 371 [select]:
database/sql.(*DB).connectionCleaner(0xc00002c4e0, 0x174876e800)
C:/Program Files/Go/src/database/sql/sql.go:1005 +0x125
created by database/sql.(*DB).startCleanerLocked
C:/Program Files/Go/src/database/sql/sql.go:992 +0x12a

goroutine 383 [select]:
github.com/go-sql-driver/mysql.(*mysqlConn).startWatcher.func1(0xc00071afc0, 0xc00122e5a0, 0xc00071e6c0)
D:/works/gospace/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/connection.go:614 +0x110
created by github.com/go-sql-driver/mysql.(*mysqlConn).startWatcher
D:/works/gospace/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/connection.go:611 +0xef

goroutine 207 [select]:
database/sql.(*DB).connectionOpener(0xc00002c4e0, 0x18cd3b8, 0xc000658740)
C:/Program Files/Go/src/database/sql/sql.go:1133 +0xd7
created by database/sql.OpenDB
C:/Program Files/Go/src/database/sql/sql.go:740 +0x265

goroutine 525 [select]:
github.com/go-sql-driver/mysql.(*mysqlConn).startWatcher.func1(0xc000d900c0, 0xc001080120, 0xc000660180)
D:/works/gospace/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/connection.go:614 +0x110
created by github.com/go-sql-driver/mysql.(*mysqlConn).startWatcher
D:/works/gospace/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/connection.go:611 +0xef

goroutine 512 [select]:
github.com/go-sql-driver/mysql.(*mysqlConn).startWatcher.func1(0xc000120b40, 0xc0006a6240, 0xc000f422a0)
D:/works/gospace/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/connection.go:614 +0x110
created by github.com/go-sql-driver/mysql.(*mysqlConn).startWatcher
D:/works/gospace/pkg/mod/github.com/go-sql-driver/mysql@v1.6.0/connection.go:611 +0xef
rax 0xffffffffffffabad
rbx 0xc000d06448
rcx 0xfffffffffffd528d
rdi 0x15a7f4fd000
rsi 0x15a7f6a59a0
rbp 0x198b7ff8a0
rsp 0x198b7ff230
r8 0x42
r9 0x8
r10 0x15a56580000
r11 0x198b7feef8
r12 0x15a7d45c5e8
r13 0xaaaaaaaaaaaaaa
r14 0x10
r15 0x10
rip 0x7ff87918dfab
rflags 0x10282
cs 0x33
fs 0x53
gs 0x2b

@DarkGodOne
Copy link
Author

看了你们的说明,目前驱动线程不安全,go run的机制又恰好会触发线程安全,所以导致程序崩溃,暂时解决办法是自己建立一个连接池,按照线程id进行存储,并且加锁,同一个线程访问的时候需要先加锁再访问指定的连接,即可解决该问题,如果使用defer释放锁的时候,需要注意defer调用时的当前线程可能与调用线程不在同一个线程里,所以defer时需要按照连接反查对应的锁然后释放,否则会触发解锁未上锁的mutex的错误。

@huskar-t
Copy link
Collaborator

@DarkGodOne 能提供简单的复现用例吗,或者将完整的go panic 信息贴出来

@huskar-t huskar-t reopened this Nov 19, 2021
@DarkGodOne
Copy link
Author

@DarkGodOne 能提供简单的复现用例吗,或者将完整的go panic 信息贴出来

复现用例,我这还不是每次都能复现,程序运行一会就会出现,就出现在rows.Next(),日志信息上面已经贴了,我看是崩溃在你们内部代码了,测试程序部分代码如下:
rows, err := dbhandle.Query(sqlStr+whereStr+groupStr, valueList...)
if err != nil {
logger.Error("SelectBalancevalveInterval Query Error: ", err)
return nil, err
}
dataList := []BalancevalveData{}
for rows.Next() {
var ts time.Time
var pressuresuply float64
var pressureback float64
var tempsuply float64
var tempback float64
var tempbc float64
var temphome float64
var deviceId string
err = rows.Scan(&ts, &pressuresuply, &pressureback, &tempsuply, &tempback, &tempbc, &temphome, &deviceId)
if err != nil {
logger.Error("SelectBalancevalveInterval Scan Error: ", err)
continue
}
data := BalancevalveData{}
data.Ts = ts.UnixNano() / 1000000
data.Pressuresuply = pressuresuply
data.Pressureback = pressureback
data.Tempsuply = tempsuply
data.Tempback = tempback
data.Tempbc = tempbc
data.Temphome = temphome
data.DeviceId = deviceId
dataList = append(dataList, data)
}

@huskar-t
Copy link
Collaborator

@DarkGodOne

if err != nil {
logger.Error("SelectBalancevalveInterval Scan Error: ", err)
continue
}

出错之后不应continue。
只有 goroutine 信息,没有崩溃的具体信息,如果产生 panic 尽量将 panic 原因贴出

@DarkGodOne
Copy link
Author

Exception 0xc0000005 0x1 0x1dce8490000 0x7ff882c6dfab
PC=0x7ff882c6dfab

runtime: unknown pc 0x7ff882c6dfab
stack: frame={sp:0xd43e7ff330, fp:0x0} stack=[0x0,0xd43e7ffa00)
000000d43e7ff230: 00001602c566e8f3 00007ff8c622b3f4
000000d43e7ff240: 0000000000000000 0000000000000000
000000d43e7ff250: 000000d43e7ff2c0 00007ff882e2931e
000000d43e7ff260: 000a0017000b07e5 000202990030002e
000000d43e7ff270: 0000000040000068 0000000000000000
000000d43e7ff280: 0000000000000050 0000000000000040
000000d43e7ff290: 0000000000000001 000001dcdf4d0000
000000d43e7ff2a0: cccccccccccccccc cccccccccccccccc
000000d43e7ff2b0: cccccccccccccccc cccccccccccccccc
000000d43e7ff2c0: cccccccccccccccc cccccccccccccccc
000000d43e7ff2d0: cccccccccccccccc cccccccccccccccc
000000d43e7ff2e0: cccccccccccccccc cccccccccccccccc
000000d43e7ff2f0: cccccccccccccccc cccccccccccccccc
000000d43e7ff300: cccccccccccccccc cccccccc00000001
000000d43e7ff310: 00000006cccccccc cccccccccccccccc
000000d43e7ff320: 000000d43e7ff350 00007ff882c6d980
000000d43e7ff330: <cccccccc00000007 cccccccccccccccc
000000d43e7ff340: cccccccccccccccc 000000d43e7ff390
000000d43e7ff350: 000000c000106900 00007ff882bdcadc
000000d43e7ff360: 000001dce8448d32 000001dce8406cc0
000000d43e7ff370: cccccccc00000042 cccccccc00000008
000000d43e7ff380: 000001dce8406cc0 cccccccccccccccc
000000d43e7ff390: 000000d43e7ff3e0 00007ff882af8dfe
000000d43e7ff3a0: 000001dce8748a68 cccccccccccccccc
000000d43e7ff3b0: cccccccccccccccc cccccccccccccccc
000000d43e7ff3c0: 0000000700000008 cccccccc00000014
000000d43e7ff3d0: cccccccccccccccc 0000000000000500
000000d43e7ff3e0: 000000d43e7ff460 00007ff882af92a7
000000d43e7ff3f0: 000001dce8748050 000001dce87482c0
000000d43e7ff400: cccccccc00000008 000001dc00000000
000000d43e7ff410: 000001dce83ada40 cccccccccccccccc
000000d43e7ff420: 000001dce8748050 000001dce87482c0
runtime: unknown pc 0x7ff882c6dfab
stack: frame={sp:0xd43e7ff330, fp:0x0} stack=[0x0,0xd43e7ffa00)
000000d43e7ff230: 00001602c566e8f3 00007ff8c622b3f4
000000d43e7ff240: 0000000000000000 0000000000000000
000000d43e7ff250: 000000d43e7ff2c0 00007ff882e2931e
000000d43e7ff260: 000a0017000b07e5 000202990030002e
000000d43e7ff270: 0000000040000068 0000000000000000
000000d43e7ff280: 0000000000000050 0000000000000040
000000d43e7ff290: 0000000000000001 000001dcdf4d0000
000000d43e7ff2a0: cccccccccccccccc cccccccccccccccc
000000d43e7ff2b0: cccccccccccccccc cccccccccccccccc
000000d43e7ff2c0: cccccccccccccccc cccccccccccccccc
000000d43e7ff2d0: cccccccccccccccc cccccccccccccccc
000000d43e7ff2e0: cccccccccccccccc cccccccccccccccc
000000d43e7ff2f0: cccccccccccccccc cccccccccccccccc
000000d43e7ff300: cccccccccccccccc cccccccc00000001
000000d43e7ff310: 00000006cccccccc cccccccccccccccc
000000d43e7ff320: 000000d43e7ff350 00007ff882c6d980
000000d43e7ff330: <cccccccc00000007 cccccccccccccccc
000000d43e7ff340: cccccccccccccccc 000000d43e7ff390
000000d43e7ff350: 000000c000106900 00007ff882bdcadc
000000d43e7ff360: 000001dce8448d32 000001dce8406cc0
000000d43e7ff370: cccccccc00000042 cccccccc00000008
000000d43e7ff380: 000001dce8406cc0 cccccccccccccccc
000000d43e7ff390: 000000d43e7ff3e0 00007ff882af8dfe
000000d43e7ff3a0: 000001dce8748a68 cccccccccccccccc
000000d43e7ff3b0: cccccccccccccccc cccccccccccccccc
000000d43e7ff3c0: 0000000700000008 cccccccc00000014
000000d43e7ff3d0: cccccccccccccccc 0000000000000500
000000d43e7ff3e0: 000000d43e7ff460 00007ff882af92a7
000000d43e7ff3f0: 000001dce8748050 000001dce87482c0
000000d43e7ff400: cccccccc00000008 000001dc00000000
000000d43e7ff410: 000001dce83ada40 cccccccccccccccc
000000d43e7ff420: 000001dce8748050 000001dce87482c0

goroutine 42 [syscall]:
github.com/taosdata/driver-go/v2/wrapper._Cfunc_taos_fetch_block(0x1dce7fc8fb0, 0xc000f78068, 0x0)
_cgo_gotypes.go:257 +0x4f
github.com/taosdata/driver-go/v2/wrapper.TaosFetchBlock.func1(0x1dce7fc8fb0, 0xc000f78068, 0xc000000000)
D:/works/gospace/pkg/mod/github.com/taosdata/driver-go/v2@v2.0.0/wrapper/taosc.go:92 +0xaa
github.com/taosdata/driver-go/v2/wrapper.TaosFetchBlock(0x1dce7fc8fb0, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/taosdata/driver-go/v2@v2.0.0/wrapper/taosc.go:92 +0x85
github.com/taosdata/driver-go/v2/taosSql.(*rows).taosFetchBlock(0xc0011e8c90)
D:/works/gospace/pkg/mod/github.com/taosdata/driver-go/v2@v2.0.0/taosSql/rows.go:75 +0x4a
github.com/taosdata/driver-go/v2/taosSql.(*rows).Next(0xc0011e8c90, 0xc001669100, 0x8, 0x8, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/taosdata/driver-go/v2@v2.0.0/taosSql/rows.go:53 +0x356
database/sql.(*Rows).nextLocked(0xc001669080, 0x100000000)
C:/Program Files/Go/src/database/sql/sql.go:2865 +0x182
database/sql.(*Rows).Next.func1()
C:/Program Files/Go/src/database/sql/sql.go:2843 +0x4d
database/sql.withLock(0x1a48af0, 0xc0016690b0, 0xc000de62d8)
C:/Program Files/Go/src/database/sql/sql.go:3294 +0x7e
database/sql.(*Rows).Next(0xc001669080, 0xc00018e300)
C:/Program Files/Go/src/database/sql/sql.go:2842 +0xd2
iotStation/database.SelectBalancevalveInterval(0xc0001b3500, 0x138b, 0x0, 0x0, 0x0, 0xc0012c6708, 0x13, 0x0, 0x0, 0xc000f8e04b, ...)
D:/works/zoolon_iot/热力项目/iotstation/database/balancevalve.go:205 +0xbf5
iotStation/northapi.(*HTTPServer).getGridData(0xc0001846c0, 0x1a544b8, 0xc0006fe1e0, 0x0, 0x0)
D:/works/zoolon_iot/热力项目/iotstation/northapi/dashboard.go:265 +0xfbd
github.com/labstack/echo/v4/middleware.KeyAuthWithConfig.func1.1(0x1a544b8, 0xc0006fe1e0, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/middleware/key_auth.go:125 +0x57c
github.com/labstack/echo/v4.(*Echo).add.func1(0x1a544b8, 0xc0006fe1e0, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:552 +0xaa
github.com/labstack/echo/v4/middleware.CORSWithConfig.func1.1(0x1a544b8, 0xc0006fe1e0, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/middleware/cors.go:118 +0x447
github.com/labstack/echo/v4/middleware.RecoverWithConfig.func1.1(0x1a544b8, 0xc0006fe1e0, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/middleware/recover.go:98 +0x1a3
github.com/labstack/echo/v4.(*Echo).ServeHTTP(0xc00017bb00, 0x1a4cd30, 0xc0000661c0, 0xc00005c000)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:662 +0x1e2
net/http.serverHandler.ServeHTTP(0xc000066540, 0x1a4cd30, 0xc0000661c0, 0xc00005c000)
C:/Program Files/Go/src/net/http/server.go:2887 +0x22b
net/http.(*conn).serve(0xc00006c1e0, 0x1a4d7f8, 0xc0006e4100)
C:/Program Files/Go/src/net/http/server.go:1952 +0x1c25
created by net/http.(*Server).Serve
C:/Program Files/Go/src/net/http/server.go:3013 +0x974

goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc000019758)
C:/Program Files/Go/src/runtime/sema.go:56 +0x49
sync.(*WaitGroup).Wait(0xc000019750)
C:/Program Files/Go/src/sync/waitgroup.go:130 +0xd7
main.main()
D:/works/zoolon_iot/热力项目/iotstation/main.go:52 +0x4fe

goroutine 24 [running]:
goroutine running on other thread; stack unavailable
created by net/http.(*Server).Serve
C:/Program Files/Go/src/net/http/server.go:3013 +0x974

goroutine 5 [syscall]:
os/signal.signal_recv(0x0)
C:/Program Files/Go/src/runtime/sigqueue.go:168 +0xaf
os/signal.loop()
C:/Program Files/Go/src/os/signal/signal_unix.go:23 +0x2d
created by os/signal.Notify.func1.1
C:/Program Files/Go/src/os/signal/signal.go:151 +0x48

goroutine 6 [chan receive]:
main.handleCtrlC(0xc000092cc0, 0xc000019750)
D:/works/zoolon_iot/热力项目/iotstation/main.go:18 +0xae
created by main.main
D:/works/zoolon_iot/热力项目/iotstation/main.go:37 +0x1dc

goroutine 7 [select]:
iotStation/southapi.(*CeebicIot).workThread(0x1cbdd40, 0x0)
D:/works/zoolon_iot/热力项目/iotstation/southapi/ceebic.go:288 +0x305
created by iotStation/southapi.(*CeebicIot).StartUp
D:/works/zoolon_iot/热力项目/iotstation/southapi/ceebic.go:452 +0xab4

goroutine 8 [IO wait]:
internal/poll.runtime_pollWait(0x1dce63bfd70, 0x72, 0xc0001fe048)
C:/Program Files/Go/src/runtime/netpoll.go:222 +0x65
internal/poll.(*pollDesc).wait(0xc0001fe1b8, 0x72, 0xf65500, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:87 +0xa5
internal/poll.execIO(0xc0001fe018, 0xc0000d34e0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2ad
internal/poll.(*FD).acceptOne(0xc0001fe000, 0x284, 0xc000d06000, 0x2, 0x2, 0xc0001fe018, 0x0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:810 +0xed
internal/poll.(*FD).Accept(0xc0001fe000, 0xc0000d38d8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
C:/Program Files/Go/src/internal/poll/fd_windows.go:844 +0x3ca
net.(*netFD).accept(0xc0001fe000, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/fd_windows.go:139 +0xeb
net.(*TCPListener).accept(0xc0001ec018, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/tcpsock_posix.go:139 +0x68
net.(*TCPListener).AcceptTCP(0xc0001ec018, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/tcpsock.go:248 +0x85
github.com/labstack/echo/v4.tcpKeepAliveListener.Accept(0xc0001ec018, 0x0, 0x0, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:971 +0x59
net/http.(*Server).Serve(0xc0000662a0, 0x1a4c5e0, 0xc000d02000, 0x0, 0x0)
C:/Program Files/Go/src/net/http/server.go:2981 +0x43a
github.com/labstack/echo/v4.(*Echo).Start(0xc00017b8c0, 0xc00012e5a5, 0xd, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:679 +0x187
iotStation/southapi.(*CeebicIot).StartUp.func1(0x1cbdd40, 0xc00012e5a5, 0xd)
D:/works/zoolon_iot/热力项目/iotstation/southapi/ceebic.go:459 +0x1aa
created by iotStation/southapi.(*CeebicIot).StartUp
D:/works/zoolon_iot/热力项目/iotstation/southapi/ceebic.go:456 +0xb29

goroutine 9 [IO wait]:
internal/poll.runtime_pollWait(0x1dce63bfe58, 0x72, 0xc000c822c8)
C:/Program Files/Go/src/runtime/netpoll.go:222 +0x65
internal/poll.(*pollDesc).wait(0xc000c82438, 0x72, 0xf65500, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:87 +0xa5
internal/poll.execIO(0xc000c82298, 0xc0000cf4d0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2ad
internal/poll.(*FD).acceptOne(0xc000c82280, 0x2fc, 0xc000c501e0, 0x2, 0x2, 0xc000c82298, 0x0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:810 +0xed
internal/poll.(*FD).Accept(0xc000c82280, 0xc0000cf8c8, 0x0, 0x0, 0x0, 0x0, 0x100000000000000, 0x0, 0x0, 0x0, ...)
C:/Program Files/Go/src/internal/poll/fd_windows.go:844 +0x3ca
net.(*netFD).accept(0xc000c82280, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/fd_windows.go:139 +0xeb
net.(*TCPListener).accept(0xc0000046f0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/tcpsock_posix.go:139 +0x68
net.(*TCPListener).AcceptTCP(0xc0000046f0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/tcpsock.go:248 +0x85
github.com/labstack/echo/v4.tcpKeepAliveListener.Accept(0xc0000046f0, 0x0, 0x0, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:971 +0x59
net/http.(*Server).Serve(0xc000066540, 0x1a4c5e0, 0xc000006a00, 0x0, 0x0)
C:/Program Files/Go/src/net/http/server.go:2981 +0x43a
github.com/labstack/echo/v4.(*Echo).Start(0xc00017bb00, 0xc00012e547, 0xd, 0x0, 0x0)
D:/works/gospace/pkg/mod/github.com/labstack/echo/v4@v4.6.1/echo.go:679 +0x187
iotStation/northapi.(*HTTPServer).webThread(0xc0001846c0)
D:/works/zoolon_iot/热力项目/iotstation/northapi/httpServer.go:107 +0x1d2
created by iotStation/northapi.(*HTTPServer).Httpinit
D:/works/zoolon_iot/热力项目/iotstation/northapi/httpServer.go:100 +0x12cf

goroutine 10 [chan receive]:
github.com/natefinch/lumberjack.(*Logger).millRun(0xc0001a0420)
D:/works/gospace/pkg/mod/github.com/natefinch/lumberjack@v2.0.0+incompatible/lumberjack.go:379 +0x4e
created by github.com/natefinch/lumberjack.(*Logger).mill.func1
D:/works/gospace/pkg/mod/github.com/natefinch/lumberjack@v2.0.0+incompatible/lumberjack.go:390 +0x92

goroutine 66 [IO wait]:
internal/poll.runtime_pollWait(0x1dce63bfab8, 0x72, 0xc000c44518)
C:/Program Files/Go/src/runtime/netpoll.go:222 +0x65
internal/poll.(*pollDesc).wait(0xc000c446b8, 0x72, 0xf65500, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:87 +0xa5
internal/poll.execIO(0xc000c44518, 0x1a0d0e8, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2ad
internal/poll.(*FD).Read(0xc000c44500, 0xc000c4c000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:441 +0x56d
net.(*netFD).Read(0xc000c44500, 0xc000c4c000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/fd_posix.go:55 +0x85
net.(*conn).Read(0xc000158050, 0xc000c4c000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/net.go:183 +0xbc
net/http.(*connReader).Read(0xc000108360, 0xc000c4c000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/http/server.go:800 +0x2a9
bufio.(*Reader).fill(0xc0001a0540)
C:/Program Files/Go/src/bufio/bufio.go:101 +0x2d9
bufio.(*Reader).ReadSlice(0xc0001a0540, 0x1dce5f8aa0a, 0x0, 0x0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/bufio/bufio.go:360 +0x3b0
bufio.(*Reader).ReadLine(0xc0001a0540, 0x0, 0x0, 0x0, 0xc000d84100, 0x0, 0x0)
C:/Program Files/Go/src/bufio/bufio.go:389 +0x8f
net/textproto.(*Reader).readLineSlice(0xc0006e2150, 0x0, 0x0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/textproto/reader.go:57 +0xbe
net/textproto.(*Reader).ReadLine(0xc0006e2150, 0x0, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/textproto/reader.go:38 +0x76
net/http.readRequest(0xc0001a0540, 0x101000, 0xc000154500, 0x0, 0x0)
C:/Program Files/Go/src/net/http/request.go:1027 +0xc5
net/http.(*conn).readRequest(0xc000c4e000, 0x1a4d7f8, 0xc000130200, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/http/server.go:986 +0x50d
net/http.(*conn).serve(0xc000c4e000, 0x1a4d7f8, 0xc000130200)
C:/Program Files/Go/src/net/http/server.go:1878 +0xde8
created by net/http.(*Server).Serve
C:/Program Files/Go/src/net/http/server.go:3013 +0x974

goroutine 50 [IO wait]:
internal/poll.runtime_pollWait(0x1dce63bfba0, 0x72, 0xc0006f8018)
C:/Program Files/Go/src/runtime/netpoll.go:222 +0x65
internal/poll.(*pollDesc).wait(0xc0006f81b8, 0x72, 0xf65500, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:87 +0xa5
internal/poll.execIO(0xc0006f8018, 0x1a0d0e8, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0x2ad
internal/poll.(*FD).Read(0xc0006f8000, 0xc000d0a000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/internal/poll/fd_windows.go:441 +0x56d
net.(*netFD).Read(0xc0006f8000, 0xc000d0a000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/fd_posix.go:55 +0x85
net.(*conn).Read(0xc0006fc000, 0xc000d0a000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/net.go:183 +0xbc
net/http.(*connReader).Read(0xc0001fa2a0, 0xc000d0a000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
C:/Program Files/Go/src/net/http/server.go:800 +0x2a9
bufio.(*Reader).fill(0xc000d082a0)
C:/Program Files/Go/src/bufio/bufio.go

@huskar-t
Copy link
Collaborator

@DarkGodOne 非常感谢提供错误信息,能将这个错误日志的往前几行也贴出吗

@DarkGodOne
Copy link
Author

@DarkGodOne 非常感谢提供错误信息,能将这个错误日志的往前几行也贴出吗

前面没有了,前面就是我自己的日志了

@huskar-t
Copy link
Collaborator

@DarkGodOne
可以尝试使用 develop 分支试一下
修改go.mod 里的require
github.com/taosdata/driver-go/v2 v2.0.1-0.20211116040418-1b9d80235aa7
之后执行 go mod tidy
如果仍然出现麻烦也像上面一样贴出错误信息

@DarkGodOne
Copy link
Author

DarkGodOne commented Nov 23, 2021 via email

@huskar-t
Copy link
Collaborator

@DarkGodOne develop 跟 TDengine 的 develop 分支功能。请安装 2.3.2.0 版本

@DarkGodOne
Copy link
Author

DarkGodOne commented Nov 23, 2021 via email

@huskar-t
Copy link
Collaborator

huskar-t commented Nov 23, 2021

@DarkGodOne 使用这个提交试下
github.com/taosdata/driver-go/v2 v2.0.1-0.20211105065234-b33e164d5682

@DarkGodOne
Copy link
Author

DarkGodOne commented Nov 24, 2021 via email

@DarkGodOne
Copy link
Author

看日志里面:
goroutine 11 [syscall]:
goroutine 21 [syscall]:
这两个协程里面,一个在调用Next,一个在调用query,这个会出现冲突么?
我用的是同一个sql.DB

@huskar-t
Copy link
Collaborator

看日志里面: goroutine 11 [syscall]: goroutine 21 [syscall]: 这两个协程里面,一个在调用Next,一个在调用query,这个会出现冲突么? 我用的是同一个sql.DB

@DarkGodOne 我们已复现该问题,正在定位

@huskar-t
Copy link
Collaborator

@DarkGodOne 该问题已修复将在下次 TDengine 发版时发布,无需更新 driver-go。在 linux 环境下不受影响,可先在 linux 环境进行开发

@DarkGodOne
Copy link
Author

DarkGodOne commented Nov 26, 2021 via email

@huskar-t
Copy link
Collaborator

2.3.4.0 fixed

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

2 participants