[ https://issues.apache.org/jira/browse/THRIFT-2243?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13814254#comment-13814254 ]
Jens Geyer commented on THRIFT-2243: ------------------------------------ [~juliengreard]: I had another look into the code and from my understanding there is no chance for the socketState_ to get a value of 0x7FFF in a legal way ever. Since the code sends a lot of status messages through GlobalOutput, I wonder if you could catch that log and add it here? And were yo able to reproduce the problem using the TestServer.cpp? > TNonblockingServer in thrift crashes when TFramedTransport opens > ---------------------------------------------------------------- > > Key: THRIFT-2243 > URL: https://issues.apache.org/jira/browse/THRIFT-2243 > Project: Thrift > Issue Type: Bug > Components: C++ - Library > Affects Versions: 0.8, 0.9.1 > Environment: Ubuntu 12.04 > Reporter: julien greard > Priority: Blocker > Labels: nonblocking > Fix For: 0.9.2 > > > This bug is also a question on StackOverflow, the code extracts are easier to > read here : > http://stackoverflow.com/questions/19586340/tnonblockingserver-in-thrift-crashes-when-tframedtransport-opens > I've been trying to implement a thrift server in C++ to communicate with a > Python client. > here is my code: > C++ server: > > shared_ptr<ThriftHandler> _handler (new myHandler()); > shared_ptr<TProcessor> _processor (new myService(_handler)); > shared_ptr<TProtocolFactory> _protocolFactory (new > TBinaryProtocolFactory()); > shared_ptr<ThreadManager> _threadManager = > ThreadManager::newSimpleThreadManager(15); > shared_ptr<PosixThreadFactory> _threadFactory(new PosixThreadFactory()); > _threadManager->threadFactory(_threadFactory); > _threadManager->start(); > shared_ptr<TNonblockingServer> _server(new TNonblockingServer(_processor, > _protocolFactory, 9090 ,_threadManager));; > _server->serve(); > Python Client code: > transport = TSocket.TSocket(host, port) > transport = TTransport.TFramedTransport(transport) > protocol = TBinaryProtocol.TBinaryProtocol(transport) > client = MyService.Client(protocol) > transport.open() > log.info("connection success!") > When I start the server and then the client, I get the following: > On the client side (Python): > ./myPythonExec.py > connection success! > socket.error: [Errno 104] Connection reset by peer > On the server side (c++): > assertion " 0 " failed > 0 0x00007ffff0942425 in __GI_raise (sig=<optimized out>) at > ../nptl/sysdeps/unix/sysv/linux/raise.c:64 > 1 0x00007ffff0945b8b in __GI_abort () at abort.c:91 > 2 0x00007ffff093b0ee in __assert_fail_base (fmt=<optimized out>, > assertion=0x7ffff1438f1a "0", > file=0x7ffff1439298 "src/server/TNonblockingServer.cpp", line=<optimized > out>, function=<optimized out>) at assert.c:94 > 3 0x00007ffff093b192 in __GI___assert_fail (assertion=0x7ffff1438f1a > "0", file=0x7ffff1439298 "src/server/TNonblockingServer.cpp", > line=558, function=0x7ffff1439c60 "void > apache::thrift::server::TNonblockingServer::TConnection::workSocket()") at > assert.c:103 > 4 0x00007ffff14336e4 in > apache::thrift::server::TNonblockingServer::TConnection::workSocket > (this=0x7fffc0004ac0) > at src/server/TNonblockingServer.cpp:558 > 5 0x00007ffff11ed94c in event_base_loop () from > /usr/lib/libevent-2.0.so.5 > I've tested this bug on thrift 0.8.0 and 0.9.1 > It works perfectly when using a TSimpleServer on C++ and a TBufferedTransport > on the client side -- This message was sent by Atlassian JIRA (v6.1#6144)