On centos 6.5 , go version 1.8, stack:
panic: reflect: call of reflect.Value.Int on ptr Value [recovered]
panic: reflect: call of reflect.Value.Int on ptr Value

goroutine 52598456 [running]:
encoding/gob.catchError(0xc4209e10d0)
/root/go/src/encoding/gob/error.go:38 +0x95
panic(0xc40860, 0xc42606ad00)
/root/go/src/runtime/panic.go:489 +0x2cf
reflect.Value.Int(0xbcdec0, 0xc4251fe520, 0x196, 0x196)
/root/go/src/reflect/value.go:902 +0xb5
encoding/gob.encInt(0xc423ab4ae0, 0xc422da1e40, 0xbcdec0, 0xc4251fe520, 
0x196)
/root/go/src/encoding/gob/encode.go:188 +0x43
encoding/gob.(*Encoder).encodeStruct(0xc4209e1040, 0xc4209e1078, 
0xc421a28a20, 0xcc1be0, 0xc4251fe510, 0x199)
/root/go/src/encoding/gob/encode.go:334 +0x256
encoding/gob.(*Encoder).encode(0xc4209e1040, 0xc4209e1078, 0xcc1be0, 
0xc4251fe510, 0x199, 0xc4209c3480)
/root/go/src/encoding/gob/encode.go:707 +0x1d3
encoding/gob.(*Encoder).EncodeValue(0xc4209e1040, 0xc95bc0, 0xc4251fe510, 
0x16, 0x0, 0x0)
/root/go/src/encoding/gob/encoder.go:250 +0x3ab
encoding/gob.(*Encoder).Encode(0xc4209e1040, 0xc95bc0, 0xc4251fe510, 0x0, 
0x0)
/root/go/src/encoding/gob/encoder.go:175 +0x61
net/rpc.(*gobServerCodec).WriteResponse(0xc422b51ec0, 0xc422d737d0, 
0xc95bc0, 0xc4251fe510, 0xc422b43a40, 0xc422b4a350)
/root/go/src/net/rpc/server.go:424 +0x1dd
net/rpc.(*Server).sendResponse(0xc420055680, 0xc422b45aa0, 0xc421c4ff00, 
0xc95bc0, 0xc4251fe510, 0x1334ac0, 0xc422b51ec0, 0x0, 0x0)
/root/go/src/net/rpc/server.go:366 +0x130
net/rpc.(*service).call(0xc422afe900, 0xc420055680, 0xc422b45aa0, 
0xc422b4ec00, 0xc421c4ff00, 0xbc3800, 0xc427ab07e0, 0x16, 0xc95bc0, 
0xc4251fe510, ...)
/root/go/src/net/rpc/server.go:394 +0x22e
created by net/rpc.(*Server).ServeCodec
/root/go/src/net/rpc/server.go:481 +0x404
the source code just like below:
type RpcArgs struct{
A string
B int32
C string
D int32
E String
F int32 
G int32
H int32 
I bool
J string
K int32
L String
M int32 
N int32
O int32 
P bool
}
func RPC1(args *RpcArgs, reply *int){
//some simple logic
....
//do another async rpc call,and then painc in gob encode
rpc.Client.Go(serviceMethod, args, reply, make(chan *rpc.Call, 1))
}

I don't know why in encodeStruct function, encInt is called but its real 
type is ptr.The funcion RPC1 is called many many times well but panic 
suddenly.I'm learning source code of RPC and Gob to find reason now and 
hope someone can help me with this problem. Thank you very much.

-- 
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