thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knick, Scott E CTR USARMY RCERT-EUR (US)" <scott.e.knick....@mail.mil>
Subject RE: TNonblockingServer: overload condition begun (UNCLASSIFIED)
Date Tue, 13 Nov 2012 10:09:27 GMT
Classification: UNCLASSIFIED
Caveats: FOUO

I'm really baffled by this. No one has any ideas? Valgrind is showing an issue with something
not being allocated:

==23321== Memcheck, a memory error detector
==23321== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==23321== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==23321== Command: ./apeface --port 61234 --no-daemon
==23321== 
Thrift: Tue Nov 13 11:05:42 2012 TNonblockingServer: Serving on port 61234, 1 io threads.
Thrift: Tue Nov 13 11:05:42 2012 TNonblockingServer: using libevent 2.0.16-stable method epoll
Thrift: Tue Nov 13 11:05:42 2012 TNonblocking: IO thread #0 registered for listen.
Thrift: Tue Nov 13 11:05:42 2012 TNonblocking: IO thread #0 registered for notify.
Thrift: Tue Nov 13 11:05:42 2012 TNonblockingServer: IO thread #0 entering loop...
Thrift: Tue Nov 13 11:05:46 2012 TNonblockingServer: overload condition begun.
==23321== Use of uninitialised value of size 4
==23321==    at 0x44BB233: apache::thrift::server::TNonblockingServer::TConnection::init(int,
apache::thrift::server::TNonblockingIOThread*, sockaddr const*, unsigned int) (TNonblockingServer.cpp:1539)
==23321==    by 0x5604B3F: ???
==23321== 
==23321== Invalid read of size 4
==23321==    at 0x44BB233: apache::thrift::server::TNonblockingServer::TConnection::init(int,
apache::thrift::server::TNonblockingIOThread*, sockaddr const*, unsigned int) (TNonblockingServer.cpp:1539)
==23321==    by 0x5604B3F: ???
==23321==  Address 0x10 is not stack'd, malloc'd or (recently) free'd
==23321== 
==23321== 
==23321== Process terminating with default action of signal 11 (SIGSEGV)
==23321==  Access not within mapped region at address 0x10
==23321==    at 0x44BB233: apache::thrift::server::TNonblockingServer::TConnection::init(int,
apache::thrift::server::TNonblockingIOThread*, sockaddr const*, unsigned int) (TNonblockingServer.cpp:1539)
==23321==    by 0x5604B3F: ???
==23321==  If you believe this happened as a result of a stack
==23321==  overflow in your program's main thread (unlikely but
==23321==  possible), you can try to increase the size of the
==23321==  main thread stack using the --main-stacksize= flag.
==23321==  The main thread stack size used in this run was 8388608.
==23321== 
==23321== HEAP SUMMARY:
==23321==     in use at exit: 10,898 bytes in 219 blocks
==23321==   total heap usage: 345 allocs, 126 frees, 15,196 bytes allocated
==23321== 
==23321== LEAK SUMMARY:
==23321==    definitely lost: 0 bytes in 0 blocks
==23321==    indirectly lost: 0 bytes in 0 blocks
==23321==      possibly lost: 3,086 bytes in 51 blocks
==23321==    still reachable: 7,812 bytes in 168 blocks
==23321==         suppressed: 0 bytes in 0 blocks
==23321== Rerun with --leak-check=full to see details of leaked memory
==23321== 
==23321== For counts of detected and suppressed errors, rerun with: -v
==23321== Use --track-origins=yes to see where uninitialised values come from
==23321== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
Killed

-----Original Message-----
From: Knick, Scott E CTR USARMY RCERT-EUR (US) 
Sent: Friday, November 09, 2012 3:44 PM
To: 'user@thrift.apache.org'
Subject: TNonblockingServer: overload condition begun (UNCLASSIFIED)

Classification: UNCLASSIFIED
Caveats: FOUO

Sorry if this has already been asked, but I couldn't find an option for searching the mailing
list archives.

I am using a TNonblockingServer instance in my C++ program. On a different 64-bit Linux system,
this worked fine and all of my unit testing passed. However, a requirement has forced me to
make a 32-bit build of the program, so I did so on a 32-bit Linux system for simplicity's
sake. Everything builds well, the usual output is given from the program, but then when I
run my unit test, it blows up with an error I don't follow and I get a segmentation fault
(the last line is when this occurs):

Thrift: Fri Nov  9 15:40:11 2012 TNonblockingServer: Serving on port 61234, 1 io threads.
Thrift: Fri Nov  9 15:40:11 2012 TNonblockingServer: using libevent 2.0.16-stable method epoll
Thrift: Fri Nov  9 15:40:11 2012 TNonblocking: IO thread #0 registered for listen.
Thrift: Fri Nov  9 15:40:11 2012 TNonblocking: IO thread #0 registered for notify.
Thrift: Fri Nov  9 15:40:11 2012 TNonblockingServer: IO thread #0 entering loop... 
Thrift: Fri Nov  9 15:40:37 2012 TNonblockingServer: overload condition begun.

The stack trace shows:

Thread [1] 2814 [core: 0] (Suspended : Signal : SIGSEGV:Segmentation fault)	
	apache::thrift::server::TNonblockingServer::TConnection::init() at 0x5a2233	
	apache::thrift::server::TNonblockingServer::createConnection() at 0x5a341f	
	apache::thrift::server::TNonblockingServer::handleEvent() at 0x5a7770	
	apache::thrift::server::TNonblockingIOThread::listenHandler() at 0x5aa91c	
	event_base_loop() at 0x5c2ce9	
	apache::thrift::server::TNonblockingIOThread::run() at 0x5a4f18	
	apache::thrift::server::TNonblockingServer::serve() at 0x5a6022	
	apache::thrift::server::TServer::run() at TServer.h:112 0x8065e06	
	main() at main.cpp:171 0x8063e80	

What is going on? My code that uses the TNonblockingServer is simple enough:

    boost::shared_ptr<Remedy> handler(new Remedy());
    boost::shared_ptr<thrift::TProcessor> processor(new Apeface::RemedyProcessor(handler));
    boost::shared_ptr<thrift::protocol::TProtocolFactory> protocolFactory(new thrift::protocol::TBinaryProtocolFactory());
    
    boost::shared_ptr<thrift::concurrency::ThreadManager> threadManager = thrift::concurrency::ThreadManager::newSimpleThreadManager();
    boost::shared_ptr<thrift::concurrency::PosixThreadFactory> threadFactory = boost::shared_ptr<thrift::concurrency::PosixThreadFactory>(new
thrift::concurrency::PosixThreadFactory());
    threadManager->threadFactory(threadFactory);
    threadManager->start();
    
    thrift::server::TNonblockingServer server(processor,
                                              protocolFactory,
                                              portNum,
                                              threadManager);
    serverPtr = &server;
    
    server.run();

--
Scott Knick


Classification: UNCLASSIFIED
Caveats: FOUO



Classification: UNCLASSIFIED
Caveats: FOUO



Mime
View raw message