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.

Reply via email to