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 11:12:12 GMT
Classification: UNCLASSIFIED
Caveats: FOUO

I've discovered that the problem is my use of the -malign-double switch with gcc... I have
been doing that because a library on which I'm dependent (and which is closed source and proprietary)
requires this switch. Not sure how I'll work around this, but this isn't an Apache Thrift
issue. Thanks anyway!

-----Original Message-----
From: Knick, Scott E CTR USARMY RCERT-EUR (US) 
Sent: Tuesday, November 13, 2012 11:10 AM
To: 'user@thrift.apache.org'
Subject: RE: TNonblockingServer: overload condition begun (UNCLASSIFIED)

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



Classification: UNCLASSIFIED
Caveats: FOUO



Mime
View raw message