goctp icon indicating copy to clipboard operation
goctp copied to clipboard

trade api main中 执行到 Join 有致命错误

Open xoomp opened this issue 7 years ago • 11 comments

CTP: 2017/08/22 20:35:37.332966 GoCThostFtdcTraderSpi.OnRspQryInstrument: fu1808 SHFE ȼ1808 fu1808 fu 49 2018 8 30 1 500 1 50 1 20170703 20170801 20180731 20180801 20180807 4 false CTP: 2017/08/22 20:35:37.332987 GoCThostFtdcTraderSpi.OnRspQryInstrument: a1709 DCE 9 a1709 a 49 2017 9 1000 1 1000 1 10 1 20160205 20160315 20170914 20170915 20170919 4 false CTP: 2017/08/22 20:35:37.333027 GoCThostFtdcTraderSpi.OnRspQryInstrument: scefp INE scefp scefp scefp 53 2037 12 30 1 500 1 1000 0.1 20140117 20140120 20371231 20380102 20380103 4 true fatal error: unexpected signal during runtime execution [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x822990]

runtime stack: runtime.throw(0x90a923, 0x2a) /usr/local/go/src/runtime/panic.go:596 +0x95 runtime.sigpanic() /usr/local/go/src/runtime/signal_unix.go:274 +0x2db

goroutine 17 [syscall, locked to thread]: runtime.cgocall(0x809f80, 0xc420051a30, 0x90c948) /usr/local/go/src/runtime/cgocall.go:131 +0xe2 fp=0xc4200519f0 sp=0xc4200519b0 github.com/qerio/goctp._Cfunc__wrap_CThostFtdcRspInfoField_ErrorID_get_goctp_715aa2fe86d79dcf(0x0, 0x0) github.com/qerio/goctp/_obj/_cgo_gotypes.go:83020 +0x4e fp=0xc420051a30 sp=0xc4200519f0 github.com/qerio/goctp.SwigcptrCThostFtdcRspInfoField.GetErrorID(0x0, 0x0) github.com/qerio/goctp/_obj/goctp.go:15748 +0x2b fp=0xc420051a50 sp=0xc420051a30 github.com/qerio/goctp.(*SwigcptrCThostFtdcRspInfoField).GetErrorID(0xc4200cbd40, 0xe6fec0) :492 +0x4d fp=0xc420051a90 sp=0xc420051a50 main.(*GoCThostFtdcTraderSpi).IsErrorRspInfo(0xc420078080, 0xe65720, 0xc4200cbd40, 0xc4200cbe88) /home/sm/workspace/go/src/github.com/qerio/goctp/_example/goctp_trader_example.go:100 +0x3b fp=0xc420051b08 sp=0xc420051a90 main.(GoCThostFtdcTraderSpi).OnRspQryInstrument(0xc420078080, 0xe6a8c0, 0xc4200cbd38, 0xe65720, 0xc4200cbd40, 0x4, 0xc4200cbd01) /home/sm/workspace/go/src/github.com/qerio/goctp/_example/goctp_trader_example.go:259 +0x8ed fp=0xc420051d98 sp=0xc420051b08 github.com/qerio/goctp.(_swig_DirectorCThostFtdcTraderSpi).OnRspQryInstrument(0xc42000c240, 0xe6a8c0, 0xc4200cbd38, 0xe65720, 0xc4200cbd40, 0x4, 0xe6e201) github.com/qerio/goctp/_obj/goctp.go:86519 +0xa3 fp=0xc420051de8 sp=0xc420051d98 github.com/qerio/goctp.Swig_DirectorCThostFtdcTraderSpi_callback_OnRspQryInstrument_goctp_715aa2fe86d79dcf(0x1, 0x7f845b7fd9f0, 0x0, 0x4, 0x1) github.com/qerio/goctp/_obj/goctp.go:86540 +0xfc fp=0xc420051e58 sp=0xc420051de8 github.com/qerio/goctp._cgoexpwrap_5857374ac24d_Swig_DirectorCThostFtdcTraderSpi_callback_OnRspQryInstrument_goctp_715aa2fe86d79dcf(0x1, 0x7f845b7fd9f0, 0x0, 0x4, 0x501160001) github.com/qerio/goctp/_obj/_cgo_gotypes.go:114805 +0x52 fp=0xc420051e90 sp=0xc420051e58 runtime.call64(0x0, 0x7f845b7fd8e8, 0x7f845b7fd980, 0x28) /usr/local/go/src/runtime/asm_amd64.s:515 +0x48 fp=0xc420051ee0 sp=0xc420051e90 runtime.cgocallbackg1(0x0) /usr/local/go/src/runtime/cgocall.go:301 +0x19d fp=0xc420051f58 sp=0xc420051ee0 runtime.cgocallbackg(0x0) /usr/local/go/src/runtime/cgocall.go:184 +0x84 fp=0xc420051fc0 sp=0xc420051f58 runtime.cgocallback_gofunc(0x0, 0x0, 0x0, 0x0) /usr/local/go/src/runtime/asm_amd64.s:767 +0x74 fp=0xc420051fe0 sp=0xc420051fc0 runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:2197 +0x1 fp=0xc420051fe8 sp=0xc420051fe0

goroutine 1 [syscall, locked to thread]: github.com/qerio/goctp._Cfunc__wrap_CThostFtdcTraderApi_Join_goctp_715aa2fe86d79dcf(0x28cbcd0, 0x0) github.com/qerio/goctp/_obj/_cgo_gotypes.go:94180 +0x4e github.com/qerio/goctp.SwigcptrCThostFtdcTraderApi.Join(0x28cbcd0, 0x7ffea007876f) github.com/qerio/goctp/_obj/goctp.go:89769 +0x2b github.com/qerio/goctp.(*SwigcptrCThostFtdcTraderApi).Join(0xc4200122a0, 0x7ffea007876f) :15365 +0x4d main.main() /home/sm/workspace/go/src/github.com/qerio/goctp/_example/goctp_trader_example.go:365 +0x2d1

goroutine 18 [syscall, locked to thread]: runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:2197 +0x1

xoomp avatar Aug 23 '17 00:08 xoomp

非常感谢,已经可以采集行情和下单了,上面的问题在centos7.3 golang1.6.3&1.8.3 两个golang版本试过都没解决,不知道您有遇到没

xoomp avatar Aug 23 '17 00:08 xoomp

CTP.TraderApi.RegisterSpi(pTraderSpi)                         // 注册事件类
CTP.TraderApi.SubscribePublicTopic(0 /*THOST_TERT_RESTART*/)  // 注册公有流
CTP.TraderApi.SubscribePrivateTopic(0 /*THOST_TERT_RESTART*/) // 注册私有流
CTP.TraderApi.RegisterFront(CTP.TraderFront)
CTP.TraderApi.Init()

CTP.TraderApi.Join()   //稍加功能,此处是365行
CTP.TraderApi.Release()

xoomp avatar Aug 23 '17 00:08 xoomp

@xoomp 能分享一下你的下单的测试代码吗,我调了好几天了总是报错:不合法的登录

leehus avatar Aug 23 '17 00:08 leehus

@xoomp 请问这个崩溃问题怎么解决?

leehus avatar Aug 23 '17 01:08 leehus

崩溃没解决,作者的代码直接可以登陆,你看看ip port 账号是否有问题

xoomp avatar Aug 23 '17 17:08 xoomp

simnow账号必须改一次密码,这个也坑了我好久

xoomp avatar Aug 23 '17 17:08 xoomp

解决了,是有的Rsp操作pRspInfo在c++代码中没有初始化吧,所以不能直接GetErrorID() 等操作,这里小心

xoomp avatar Aug 23 '17 20:08 xoomp

@xoomp 我也遇到了 直接GetErrorID() 崩溃的问题 你是怎么避免的呢? 我这边有好几个 Rsp回来 Get属性 都会崩溃 ,这个安装常理都是初始化了才调用了 OnRspxxx 。 请问你是怎么解决问题 拿到响应数据的呢 ?

liweiv avatar Sep 01 '17 05:09 liweiv

感觉玩不转 出了问题不好搞定 swig还是复杂 我手动 C++ 转C cgo 调C代码 go export C C++ 调用C 用C做个中间层算了

liweiv avatar Sep 01 '17 06:09 liweiv

@drmfly c的中间层搞定了吗?我之前也试过swig,没搞定 有个通过cgo手工包装实现的,关键的api处理好了,我下周弄上github吧,大家互相帮助

gpmn avatar Oct 10 '17 01:10 gpmn

@xoomp 你好我也遇到了类似的问题,请问可以分享你的解决方案吗?

CVPaul avatar Oct 24 '17 16:10 CVPaul