11 Star 95 Fork 23

万里数据库 / gt-checksum

 / 详情

比较存储过程 程序崩溃

修复中
缺陷
创建于  
2023-07-06 14:44
panic: assignment to entry in nil map

goroutine 1 [running]:
panic({0x924640, 0xa7abf0})
        /usr/local/go/src/runtime/panic.go:987 +0x3ba fp=0xc0001e6ed0 sp=0xc0001e6e10 pc=0x4435fa
runtime.mapassign_faststr(0xc0001d0a80?, 0xc0001e7068?, {0xc00002df50, 0x12})
        /usr/local/go/src/runtime/map_faststr.go:205 +0x3da fp=0xc0001e6f40 sp=0xc0001e6ed0 pc=0x42151a
gt-checksum/actions.(*schemaTable).Proc(0xc0002be000, {0xc0001cc600, 0x9, 0x1?}, 0x8?, 0x8c?)
        /builds/gt-tools/gt-checkOut/actions/schema_tab_struct.go:732 +0x117e fp=0xc0001e75f0 sp=0xc0001e6f40 pc=0x87ef1e
main.main()
        /builds/gt-tools/gt-checkOut/greatdbCheck.go:54 +0x213 fp=0xc0001e7f80 sp=0xc0001e75f0 pc=0x89e173
runtime.main()
        /usr/local/go/src/runtime/proc.go:250 +0x212 fp=0xc0001e7fe0 sp=0xc0001e7f80 pc=0x446292
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0001e7fe8 sp=0xc0001e7fe0 pc=0x473801

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc00004afb0 sp=0xc00004af90 pc=0x446656
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:369
runtime.forcegchelper()
        /usr/local/go/src/runtime/proc.go:302 +0xad fp=0xc00004afe0 sp=0xc00004afb0 pc=0x4464ed
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00004afe8 sp=0xc00004afe0 pc=0x473801
created by runtime.init.6
        /usr/local/go/src/runtime/proc.go:290 +0x25

goroutine 3 [GC sweep wait]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc00004b790 sp=0xc00004b770 pc=0x446656
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:369
runtime.bgsweep(0x0?)
        /usr/local/go/src/runtime/mgcsweep.go:278 +0x8e fp=0xc00004b7c8 sp=0xc00004b790 pc=0x432d8e
runtime.gcenable.func1()
        /usr/local/go/src/runtime/mgc.go:178 +0x26 fp=0xc00004b7e0 sp=0xc00004b7c8 pc=0x427a46
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00004b7e8 sp=0xc00004b7e0 pc=0x473801
created by runtime.gcenable
        /usr/local/go/src/runtime/mgc.go:178 +0x6b

goroutine 4 [GC scavenge wait]:
runtime.gopark(0xc000072000?, 0xa78898?, 0x1?, 0x0?, 0x0?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc00004bf70 sp=0xc00004bf50 pc=0x446656
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:369
runtime.(*scavengerState).park(0xf816c0)
        /usr/local/go/src/runtime/mgcscavenge.go:389 +0x53 fp=0xc00004bfa0 sp=0xc00004bf70 pc=0x430e33
runtime.bgscavenge(0x0?)
        /usr/local/go/src/runtime/mgcscavenge.go:617 +0x45 fp=0xc00004bfc8 sp=0xc00004bfa0 pc=0x431405
runtime.gcenable.func2()
        /usr/local/go/src/runtime/mgc.go:179 +0x26 fp=0xc00004bfe0 sp=0xc00004bfc8 pc=0x4279e6
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00004bfe8 sp=0xc00004bfe0 pc=0x473801
created by runtime.gcenable
        /usr/local/go/src/runtime/mgc.go:179 +0xaa

goroutine 18 [finalizer wait]:
runtime.gopark(0xf81f00?, 0xc0000824e0?, 0x0?, 0x0?, 0xc00004a770?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc00004a628 sp=0xc00004a608 pc=0x446656
runtime.goparkunlock(...)
        /usr/local/go/src/runtime/proc.go:369
runtime.runfinq()
        /usr/local/go/src/runtime/mfinal.go:180 +0x10f fp=0xc00004a7e0 sp=0xc00004a628 pc=0x426b4f
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00004a7e8 sp=0xc00004a7e0 pc=0x473801
created by runtime.createfing
        /usr/local/go/src/runtime/mfinal.go:157 +0x45

goroutine 19 [select]:
runtime.gopark(0xc000046788?, 0x2?, 0x11?, 0x0?, 0xc000046784?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000046610 sp=0xc0000465f0 pc=0x446656
runtime.selectgo(0xc000046788, 0xc000046780, 0x0?, 0x0, 0x0?, 0x1)
        /usr/local/go/src/runtime/select.go:328 +0x7bc fp=0xc000046750 sp=0xc000046610 pc=0x455abc
database/sql.(*DB).connectionOpener(0xc0000a5a00, {0xa7e178, 0xc0000bb9c0})
        /usr/local/go/src/database/sql/sql.go:1224 +0x8d fp=0xc0000467b8 sp=0xc000046750 pc=0x529dcd
database/sql.OpenDB.func1()
        /usr/local/go/src/database/sql/sql.go:792 +0x2e fp=0xc0000467e0 sp=0xc0000467b8 pc=0x5281ae
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0000467e8 sp=0xc0000467e0 pc=0x473801
created by database/sql.OpenDB
        /usr/local/go/src/database/sql/sql.go:792 +0x18d

goroutine 40 [select]:
runtime.gopark(0xc000294788?, 0x2?, 0xff?, 0xff?, 0xc000294784?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000294610 sp=0xc0002945f0 pc=0x446656
runtime.selectgo(0xc000294788, 0xc000294780, 0xc00008f080?, 0x0, 0x0?, 0x1)
        /usr/local/go/src/runtime/select.go:328 +0x7bc fp=0xc000294750 sp=0xc000294610 pc=0x455abc
database/sql.(*DB).connectionOpener(0xc00029eb60, {0xa7e178, 0xc0002b2040})
        /usr/local/go/src/database/sql/sql.go:1224 +0x8d fp=0xc0002947b8 sp=0xc000294750 pc=0x529dcd
database/sql.OpenDB.func1()
        /usr/local/go/src/database/sql/sql.go:792 +0x2e fp=0xc0002947e0 sp=0xc0002947b8 pc=0x5281ae
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0002947e8 sp=0xc0002947e0 pc=0x473801
created by database/sql.OpenDB
        /usr/local/go/src/database/sql/sql.go:792 +0x18d

goroutine 35 [select]:
runtime.gopark(0xc000294f88?, 0x2?, 0x0?, 0x0?, 0xc000294f84?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000294e10 sp=0xc000294df0 pc=0x446656
runtime.selectgo(0xc000294f88, 0xc000294f80, 0x0?, 0x0, 0x0?, 0x1)
        /usr/local/go/src/runtime/select.go:328 +0x7bc fp=0xc000294f50 sp=0xc000294e10 pc=0x455abc
database/sql.(*DB).connectionOpener(0xc00029e410, {0xa7e178, 0xc0002b2000})
        /usr/local/go/src/database/sql/sql.go:1224 +0x8d fp=0xc000294fb8 sp=0xc000294f50 pc=0x529dcd
database/sql.OpenDB.func1()
        /usr/local/go/src/database/sql/sql.go:792 +0x2e fp=0xc000294fe0 sp=0xc000294fb8 pc=0x5281ae
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000294fe8 sp=0xc000294fe0 pc=0x473801
created by database/sql.OpenDB
        /usr/local/go/src/database/sql/sql.go:792 +0x18d

goroutine 20 [select]:
runtime.gopark(0xc000046f88?, 0x2?, 0x0?, 0x0?, 0xc000046f84?)
        /usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000046e10 sp=0xc000046df0 pc=0x446656
runtime.selectgo(0xc000046f88, 0xc000046f80, 0x0?, 0x0, 0x0?, 0x1)
        /usr/local/go/src/runtime/select.go:328 +0x7bc fp=0xc000046f50 sp=0xc000046e10 pc=0x455abc
database/sql.(*DB).connectionOpener(0xc000213040, {0xa7e178, 0xc0000bba00})
        /usr/local/go/src/database/sql/sql.go:1224 +0x8d fp=0xc000046fb8 sp=0xc000046f50 pc=0x529dcd
database/sql.OpenDB.func1()
        /usr/local/go/src/database/sql/sql.go:792 +0x2e fp=0xc000046fe0 sp=0xc000046fb8 pc=0x5281ae
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000046fe8 sp=0xc000046fe0 pc=0x473801
created by database/sql.OpenDB
        /usr/local/go/src/database/sql/sql.go:792 +0x18d```

评论 (4)

kkyy0234 创建了缺陷

输入图片说明
改了下:
tmpM这里设为nil后 再写入会报错
重新make后再写入就好了

您好,可以提一个PR给我们哈,谢谢
另外,也请提供下可以稳定复现的过程

两边都是 mysql 8.0
设置校验对象 checkObject =proc
然后运行就会报错 可以复现

该问题内部已经修复了,后续会发布新版

ywlianghang 任务状态待确认 修改为修复中

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
8779455 greatsql 1615290631
Go
1
https://gitee.com/GreatSQL/gt-checksum.git
git@gitee.com:GreatSQL/gt-checksum.git
GreatSQL
gt-checksum
gt-checksum

搜索帮助

344bd9b3 5694891 D2dac590 5694891