Why would you expect this to work? On Mon, 2018-08-13 at 20:44 -0700, sheepbao wrote: > go version > go version go1.10.2 darwin/amd64 > > test code: > > func TestPoint(t *testing.T) { > type A struct { > X int > Y string > } > type B struct { > X int > Y string > Z string > } > > a := A{X: 2, Y: "yy"} > b := (*B)(unsafe.Pointer(&a)) > b.Z = "zz" > > fmt.Printf(" z: %v\n", b.Z) > return > } > > > > panic info: > === RUN TestPoint > z: zz > runtime: unexpected return pc for runtime.sigpanic called from 0x2 > stack: frame={sp:0xc42004cf58, fp:0xc42004cfa8} > stack=[0xc42004c000,0xc42004d000) > 000000c42004ce58: 000000c42004ce88 00000000010514bb > <runtime.call32+59> > 000000c42004ce68: 000000c4200c00f0 000000c4200b8020 > 000000c42004ce78: 0000000000000007 0000000000000020 > 000000c42004ce88: 000000c42004cf28 0000000001027ee9 > <runtime.gopanic+553> > 000000c42004ce98: 0000000000000000 0000000001136758 > 000000c42004cea8: 000000c42008e6b0 0000000800000008 > 000000c42004ceb8: 0000000000000000 000000c420033720 > 000000c42004cec8: 00000000010973c2 <fmt.Printf+114> 000000c420066600 > 000000c42004ced8: 000000c42009a008 000000c42008e6a0 > 000000c42004cee8: 000000c42008e680 000000c420066628 > 000000c42004cef8: 000000c420066620 000000c42004ce68 > 000000c42004cf08: 0000000001108ea0 00000000011d4f80 > 000000c42004cf18: 0000000000000000 0000000000000001 > 000000c42004cf28: 000000c42004cf48 0000000001026f5e > <runtime.panicmem+94> > 000000c42004cf38: 0000000001108ea0 00000000011d4f80 > 000000c42004cf48: 000000c42004cf98 000000000103b7aa > <runtime.sigpanic+378> > 000000c42004cf58: <000000c420066600 0000000000000001 > 000000c42004cf68: 0000000000000000 00000000010fe240 > 000000c42004cf78: 000000c420082460 000000c420066600 > 000000c42004cf88: 000000000112d8f6 0000000000000002 > 000000c42004cf98: 000000000112d8f8 !0000000000000002 > 000000c42004cfa8: >000000c4200c00f0 00000000000aace2 > 000000c42004cfb8: 00000000011dc160 0000000000000000 > 000000c42004cfc8: 0000000001053ac1 <runtime.goexit+1> > 000000c4200c00f0 > 000000c42004cfd8: 0000000001136150 0000000000000000 > 000000c42004cfe8: 0000000000000000 0000000000000000 > 000000c42004cff8: 0000000000000000 > fatal error: unknown caller pc > > runtime stack: > runtime.throw(0x112fd13, 0x11) > /Users/bao/Documents/reading/golang/go1.10.2/src/runtime/panic.go > :616 > +0x81 > runtime.gentraceback(0xffffffffffffffff, 0xffffffffffffffff, 0x0, > 0xc420066600, 0x0, 0x0, 0x7fffffff, 0x1136348, 0x7ffeefbff088, 0x0, > ...) > /Users/bao/Documents/reading/golang/go1.10.2/src/runtime/tracebac > k.go:257 > +0x1bdb > runtime.copystack(0xc420066600, 0x1000, 0x1) > /Users/bao/Documents/reading/golang/go1.10.2/src/runtime/stack.go > :891 > +0x270 > runtime.newstack() > /Users/bao/Documents/reading/golang/go1.10.2/src/runtime/stack.go > :1063 > +0x30f > runtime.morestack() > /Users/bao/Documents/reading/golang/go1.10.2/src/runtime/asm_amd6 > 4.s:492 > +0x89 > > goroutine 19 [copystack]: > fmt.(*pp).argNumber(0xc4200c6000, 0x0, 0x112db26, 0x5, 0x1, 0x1, 0x0, > 0x0, > 0x0) > /Users/bao/Documents/reading/golang/go1.10.2/src/fmt/print.go:926 > > +0x112 fp=0xc42004cb48 sp=0xc42004cb40 pc=0x109d9a2 > fmt.(*pp).doPrintf(0xc4200c6000, 0x112db26, 0x5, 0xc42004ccc8, 0x1, > 0x1) > /Users/bao/Documents/reading/golang/go1.10.2/src/fmt/print.go:101 > 4 > +0x1ca fp=0xc42004cc30 sp=0xc42004cb48 pc=0x109deba > fmt.Sprintf(0x112db26, 0x5, 0xc4200334c8, 0x1, 0x1, 0xc42008e6d8, > 0xc42008e6e0) > /Users/bao/Documents/reading/golang/go1.10.2/src/fmt/print.go:203 > +0x66 > fp=0xc42004cc88 sp=0xc42004cc30 pc=0x1097466 > testing.fmtDuration(0xa388, 0x3, 0xc420026570) > /Users/bao/Documents/reading/golang/go1.10.2/src/testing/testing. > go:438 > +0xdf fp=0xc42004cce8 sp=0xc42004cc88 pc=0x10ae90f > testing.(*T).report(0xc4200c00f0) > /Users/bao/Documents/reading/golang/go1.10.2/src/testing/testing. > go:997 > +0x57 fp=0xc42004cdf8 sp=0xc42004cce8 pc=0x10afcf7 > testing.tRunner.func1(0xc4200c00f0) > /Users/bao/Documents/reading/golang/go1.10.2/src/testing/testing. > go:741 > +0x285 fp=0xc42004ce68 sp=0xc42004cdf8 pc=0x10b2e75 > runtime.call32(0x0, 0x1136758, 0xc42008e6b0, 0x800000008) > /Users/bao/Documents/reading/golang/go1.10.2/src/runtime/asm_amd6 > 4.s:585 > +0x3b fp=0xc42004ce98 sp=0xc42004ce68 pc=0x10514bb > panic(0x1108ea0, 0x11d4f80) > /Users/bao/Documents/reading/golang/go1.10.2/src/runtime/panic.go > :502 > +0x229 fp=0xc42004cf38 sp=0xc42004ce98 pc=0x1027ee9 > runtime.panicmem() > /Users/bao/Documents/reading/golang/go1.10.2/src/runtime/panic.go > :63 > +0x5e fp=0xc42004cf58 sp=0xc42004cf38 pc=0x1026f5e > runtime: unexpected return pc for runtime.sigpanic called from 0x2 > stack: frame={sp:0xc42004cf58, fp:0xc42004cfa8} > stack=[0xc42004c000,0xc42004d000) > 000000c42004ce58: 000000c42004ce88 00000000010514bb > <runtime.call32+59> > 000000c42004ce68: 000000c4200c00f0 000000c4200b8020 > 000000c42004ce78: 0000000000000007 0000000000000020 > 000000c42004ce88: 000000c42004cf28 0000000001027ee9 > <runtime.gopanic+553> > 000000c42004ce98: 0000000000000000 0000000001136758 > 000000c42004cea8: 000000c42008e6b0 0000000800000008 > 000000c42004ceb8: 0000000000000000 000000c420033720 > 000000c42004cec8: 00000000010973c2 <fmt.Printf+114> 000000c420066600 > 000000c42004ced8: 000000c42009a008 000000c42008e6a0 > 000000c42004cee8: 000000c42008e680 000000c420066628 > 000000c42004cef8: 000000c420066620 000000c42004ce68 > 000000c42004cf08: 0000000001108ea0 00000000011d4f80 > 000000c42004cf18: 0000000000000000 0000000000000001 > 000000c42004cf28: 000000c42004cf48 0000000001026f5e > <runtime.panicmem+94> > 000000c42004cf38: 0000000001108ea0 00000000011d4f80 > 000000c42004cf48: 000000c42004cf98 000000000103b7aa > <runtime.sigpanic+378> > 000000c42004cf58: <000000c420066600 0000000000000001 > 000000c42004cf68: 0000000000000000 00000000010fe240 > 000000c42004cf78: 000000c420082460 000000c420066600 > 000000c42004cf88: 000000000112d8f6 0000000000000002 > 000000c42004cf98: 000000000112d8f8 !0000000000000002 > 000000c42004cfa8: >000000c4200c00f0 00000000000aace2 > 000000c42004cfb8: 00000000011dc160 0000000000000000 > 000000c42004cfc8: 0000000001053ac1 <runtime.goexit+1> > 000000c4200c00f0 > 000000c42004cfd8: 0000000001136150 0000000000000000 > 000000c42004cfe8: 0000000000000000 0000000000000000 > 000000c42004cff8: 0000000000000000 > runtime.sigpanic() > /Users/bao/Documents/reading/golang/go1.10.2/src/runtime/signal_u > nix.go:388 > +0x17a fp=0xc42004cfa8 sp=0xc42004cf58 pc=0x103b7aa > created by testing.(*T).Run > /Users/bao/Documents/reading/golang/go1.10.2/src/testing/testing. > go:824 > +0x2e0 > > goroutine 1 [chan receive]: > testing.(*T).Run(0xc4200c00f0, 0x112e47d, 0x9, 0x1136150, 0x1065836) > /Users/bao/Documents/reading/golang/go1.10.2/src/testing/testing. > go:825 > +0x301 > testing.runTests.func1(0xc4200c0000) > /Users/bao/Documents/reading/golang/go1.10.2/src/testing/testing. > go:1063 > +0x64 > testing.tRunner(0xc4200c0000, 0xc42004bdf8) > /Users/bao/Documents/reading/golang/go1.10.2/src/testing/testing. > go:777 > +0xd0 > testing.runTests(0xc4200a0020, 0x11d5140, 0x1, 0x1, 0x100e759) > /Users/bao/Documents/reading/golang/go1.10.2/src/testing/testing. > go:1061 > +0x2c4 > testing.(*M).Run(0xc4200b4000, 0x0) > /Users/bao/Documents/reading/golang/go1.10.2/src/testing/testing. > go:978 > +0x171 > main.main() > >
-- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.