alibaba-archive / torchcraft-py

Python wrapper for TorchCraft. (In progress)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Server(bwapi) crashes immediately after launching torchcraft-py

yiyang92 opened this issue · comments

On client side I have a following message:
ZMQ:server::connect(): invalid message

Also protocol version must be changed as TorchCraft now using v17 instead of v16
bwapi errors file:

//////////////////////////////////////////////////
TIME: Mon Apr 10 13:53:27 2017

VERSION: 1.16.1.1
BWAPI:
REVISION: 4708
BUILD: RELEASE
ERROR: None
LOCATION: Single Player
MAP: marines_1v1
m5v5_c_far.scm

EXCEPTION: 0xC0000005 EXCEPTION_ACCESS_VIOLATION
FAULT: 0x0F424F78 czmq.dll
REGISTERS:
EDI: 04986C80
ESI: 00000000
EBX: 00000000
EDX: 00000000
ECX: 00000000
EAX: 00000000
EBP: 0019F928
EIP: 0F424F78
ESP: 0019F928
STACK:
czmq.dll 0x0F424F78 zsock_is
czmq.dll 0x0F4255D0 zsock_resolve
czmq.dll 0x0F4219E6 zmsg_send
czmq.dll 0x0F42643E zsock_vsend
czmq.dll 0x0F425642 zsock_send
BWEnv.dll 0x0FED6713 newAIModule
BWEnv.dll 0x0FEC32F0 ----
BWEnv.dll 0x0FEC8A48 newAIModule
BWAPI.dll 0x1003471E ----
BWAPI.dll 0x1003496A ----
BWAPI.dll 0x10041BC9 ----
BWAPI.dll 0x100345E7 ----

I also got the same problem,“ZMQ_server::connect(): invalid message”, and then bwapi crashed。

Looks like it's because of protocol incompatibility. Current TorchCraft server uses FlatBuffers as a serialization backend.

The mentioned error is thrown by the server logic. It's context implies that received message was not parsed successfully. If we look here we'll see that TorchCraft-py simply tries to write the text message to the ZMQ socket.

P.S.: I'm using TorchCraft-py as an reference for my pending Rust API. Looks like I need to switch to the original code.

To add a little more detail, torchcraft-py using torchcraft protocol version 16, but since torchcraft v1.1 the version of the protocol has been updated to version 17 (which is the one using flatbuffers).

Ideally, torchcraft-py would be updated to support torchcraft protocol version 17. For now you can get torchcraft-py working by using an older version of torchcraft. I replaced the BWEnv.dll in the docker image I was using with version v1.0-2 and attack_weakest.py seemed to work.

Edit: removed misconception about poor performance