reflect2 icon indicating copy to clipboard operation
reflect2 copied to clipboard

unsafe_map crash

Open cuisj opened this issue 2 years ago • 4 comments

fatal error: fault [signal SIGSEGV: segmentation violation code=0x80 addr=0x0 pc=0x4616bf]

goroutine 40 [running]: runtime.throw({0x90159d?, 0x8?}) /usr/local/go/src/runtime/panic.go:992 +0x71 fp=0xc0000bb2f0 sp=0xc0000bb2c0 pc=0x435051 runtime.sigpanic() /usr/local/go/src/runtime/signal_unix.go:825 +0x305 fp=0xc0000bb340 sp=0xc0000bb2f0 pc=0x44a545 aeshashbody() /usr/local/go/src/runtime/asm_amd64.s:1343 +0x39f fp=0xc0000bb348 sp=0xc0000bb340 pc=0x4616bf runtime.mapiternext(0xc0002ace40) /usr/local/go/src/runtime/map.go:934 +0x2cb fp=0xc0000bb3b8 sp=0xc0000bb348 pc=0x410f0b runtime.mapiterinit(0x1?, 0x1b?, 0x10?) /usr/local/go/src/runtime/map.go:861 +0x228 fp=0xc0000bb3d8 sp=0xc0000bb3b8 pc=0x410be8 reflect.mapiterinit(0x861b00?, 0x40b9b5?, 0x87ca98?) /usr/local/go/src/runtime/map.go:1373 +0x19 fp=0xc0000bb400 sp=0xc0000bb3d8 pc=0x45e539 github.com/modern-go/reflect2.(*UnsafeMapType).UnsafeIterate(...) /root/go/pkg/mod/github.com/modern-go/[email protected]/unsafe_map.go:112 github.com/json-iterator/go.(*mapEncoder).Encode(0xc0003cca50, 0xc0002acbe0, 0xc000281680) /root/go/pkg/mod/github.com/json-iterator/[email protected]/reflect_map.go:257 +0x21c fp=0xc0000bb4b0 sp=0xc0000bb400 pc=0x58cddc github.com/json-iterator/go.(*structFieldEncoder).Encode(0xc0003ccbd0, 0x839d14?, 0xc000281680) /root/go/pkg/mod/github.com/json-iterator/[email protected]/reflect_struct_encoder.go:110 +0x56 fp=0xc0000bb528 sp=0xc0000bb4b0 pc=0x59a6f6 github.com/json-iterator/go.(*structEncoder).Encode(0xc0003ccc30, 0x0?, 0xc000281680) /root/go/pkg/mod/github.com/json-iterator/[email protected]/reflect_struct_encoder.go:158 +0x652 fp=0xc0000bb600 sp=0xc0000bb528 pc=0x59aff2 github.com/json-iterator/go.(*OptionalEncoder).Encode(0xc00011e280?, 0x0?, 0x0?) /root/go/pkg/mod/github.com/json-iterator/[email protected]/reflect_optional.go:74 +0xa4 fp=0xc0000bb650 sp=0xc0000bb600 pc=0x592724 github.com/json-iterator/go.(*onePtrEncoder).Encode(0xc0003b7330, 0xc0002acbc0, 0xc0003cc3f0?) /root/go/pkg/mod/github.com/json-iterator/[email protected]/reflect.go:219 +0x82 fp=0xc0000bb688 sp=0xc0000bb650 pc=0x585e02 github.com/json-iterator/go.(*Stream).WriteVal(0xc000281680, {0x895760, 0xc0002acbc0}) /root/go/pkg/mod/github.com/json-iterator/[email protected]/reflect.go:98 +0x158 fp=0xc0000bb6f8 sp=0xc0000bb688 pc=0x585118 github.com/json-iterator/go.(*frozenConfig).Marshal(0xc00011e280, {0x895760, 0xc0002acbc0}) /root/go/pkg/mod/github.com/json-iterator/[email protected]/config.go:299 +0xc9 fp=0xc0000bb790 sp=0xc0000bb6f8 pc=0x57d809 github.com/json-iterator/go.Marshal(...) /root/go/pkg/mod/github.com/json-iterator/[email protected]/adapter.go:34 github.asiainfo-sec.com/ZSP-SDP/aisdp-common/aisdp-rocketmq/rocketmq-client-go/v2/internal/remote.(*jsonCodec).encodeHeader(0xc0000bb838?, 0x4104fd?) /root/go/pkg/mod/github.asiainfo-sec.com/!z!s!p-!s!d!p/aisdp-common/[email protected]/rocketmq-client-go/v2/internal/remote/codec.go:281 +0x33 fp=0xc0000bb7b8 sp=0xc0000bb790 pc=0x7bda93

cuisj avatar Apr 06 '22 05:04 cuisj

Looks like this is fixed as of 1.0.2, but the version of github.com/json-iterator/goyou're using has a lower version bound on this package; if you update the latter package to v1.1.12 I think that should fix it (worked for my own project locally).

zenhack avatar Apr 16 '22 04:04 zenhack

I'm seeing a similar crash from version v1.0.2 in the json-iterator package:

kubed-cint-59bbc96755-8x5m5 kubed I0627 17:07:53.274202       7 trace.go:205] Trace[1474941318]: "Reflector ListAndWatch" name:k8s.io/client-go/informers/factory.go:134 (27-Jun-2022 17:07:37.491) (total time: 15782ms):
kubed-cint-59bbc96755-8x5m5 kubed Trace[1474941318]: ---"Objects listed" 15777ms (17:07:00.269)
kubed-cint-59bbc96755-8x5m5 kubed Trace[1474941318]: [15.782796639s] [15.782796639s] END
kubed-cint-59bbc96755-8x5m5 kubed unexpected fault address 0x0
kubed-cint-59bbc96755-8x5m5 kubed fatal error: fault
kubed-cint-59bbc96755-8x5m5 kubed [signal SIGSEGV: segmentation violation code=0x80 addr=0x0 pc=0x4662bf]
kubed-cint-59bbc96755-8x5m5 kubed
kubed-cint-59bbc96755-8x5m5 kubed goroutine 161 [running]:
kubed-cint-59bbc96755-8x5m5 kubed runtime.throw({0x1e19095?, 0x1?})
kubed-cint-59bbc96755-8x5m5 kubed       /usr/local/go/src/runtime/panic.go:992 +0x71 fp=0xc001ff4ee8 sp=0xc001ff4eb8 pc=0x4361d1
kubed-cint-59bbc96755-8x5m5 kubed runtime.sigpanic()
kubed-cint-59bbc96755-8x5m5 kubed       /usr/local/go/src/runtime/signal_unix.go:825 +0x305 fp=0xc001ff4f38 sp=0xc001ff4ee8 pc=0x44c465
kubed-cint-59bbc96755-8x5m5 kubed aeshashbody()
kubed-cint-59bbc96755-8x5m5 kubed       /usr/local/go/src/runtime/asm_amd64.s:1343 +0x39f fp=0xc001ff4f40 sp=0xc001ff4f38 pc=0x4662bf
kubed-cint-59bbc96755-8x5m5 kubed runtime.mapiternext(0xc0002a9c80)
kubed-cint-59bbc96755-8x5m5 kubed       /usr/local/go/src/runtime/map.go:934 +0x2cb fp=0xc001ff4fb0 sp=0xc001ff4f40 pc=0x40fd0b
kubed-cint-59bbc96755-8x5m5 kubed runtime.mapiterinit(0x8b2ac2?, 0xc000766420?, 0x7f57a86404d0?)
kubed-cint-59bbc96755-8x5m5 kubed       /usr/local/go/src/runtime/map.go:861 +0x228 fp=0xc001ff4fd0 sp=0xc001ff4fb0 pc=0x40f9e8
kubed-cint-59bbc96755-8x5m5 kubed reflect.mapiterinit(0x8c75f6?, 0x1b723c0?, 0xc0002a9c80?)
kubed-cint-59bbc96755-8x5m5 kubed       /usr/local/go/src/runtime/map.go:1373 +0x19 fp=0xc001ff4ff8 sp=0xc001ff4fd0 pc=0x462ab9
kubed-cint-59bbc96755-8x5m5 kubed github.com/modern-go/reflect2.(*UnsafeMapType).UnsafeIterate(...)
kubed-cint-59bbc96755-8x5m5 kubed       /go/src/github.com/kubeops/config-syncer/vendor/github.com/modern-go/reflect2/unsafe_map.go:112
kubed-cint-59bbc96755-8x5m5 kubed github.com/json-iterator/go.(*mapEncoder).IsEmpty(0x11?, 0x1951f4b?)
kubed-cint-59bbc96755-8x5m5 kubed       /go/src/github.com/kubeops/config-syncer/vendor/github.com/json-iterator/go/reflect_map.go:275 +0x28 fp=0xc001ff5038 sp=0xc001ff4ff8 pc=0x8b9bc8

szelenka avatar Jun 27 '22 17:06 szelenka

I am seeing the same problem when running the test on https://github.com/thanos-io/thanos/pull/5258.

See: https://app.circleci.com/pipelines/github/thanos-io/thanos/9801/workflows/a326ed02-acea-4ba8-af5e-cd04e15f8b1c/jobs/19315?invite=true#step-107-1842

sylr avatar Jul 05 '22 18:07 sylr

I was able to mitigate the error by reverting back to 1.17 go compiler, seems something is not happy with 1.18+

szelenka avatar Jul 05 '22 20:07 szelenka