activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Albert Strasheim (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQCPP-122) Crash on Windows when rapidly creating and destroying connections
Date Mon, 04 Jun 2007 06:41:33 GMT

    [ https://issues.apache.org/activemq/browse/AMQCPP-122?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_39215
] 

Albert Strasheim commented on AMQCPP-122:
-----------------------------------------

I don't think this is specific to the DLL build. I just happened to be doing a DLL build.
I'll check that it also happens with the static library tonight.

Also, this usage scenario is quite realistic. I am seeing this crash about 1 in every 5 times
I run the pyactivemq unit tests, which only does "normal" things with AMQCPP.

The code I posted might be slightly unrealistic, but it was the quickest way I could duplicate
the crash outside of pyactivemq.

> Crash on Windows when rapidly creating and destroying connections
> -----------------------------------------------------------------
>
>                 Key: AMQCPP-122
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-122
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>    Affects Versions: 2.1
>            Reporter: Albert Strasheim
>            Assignee: Nathan Mittler
>             Fix For: 2.1
>
>
> Me again. :)
> The following program crashes within a few seconds on my Windows XP machine. This machine
has a Core 2 Duo processor (i. e. 2 cores).
> On my Pentium 4 + Hyperthreading Linux machine is only dies after about a minute with:
> terminate called after throwing an instance of 'activemq::exceptions::ActiveMQException'
>   what():  Cannot assign requested address
> Aborted
> However, this is to be expected, since the program causes thousands of sockets to be
created. This doesn't seem to be the reason it crashes on Windows though.
> The code:
> {code:none}
> #include <activemq/core/ActiveMQConnectionFactory.h> 
> #include <cms/Connection.h> 
> #include <cms/Session.h>
> #include <cms/MessageProducer.h>
> #include <cms/DeliveryMode.h>
> int main(int argc, char* argv[]) {                            
>   activemq::core::ActiveMQConnectionFactory connectionFactory("tcp://localhost:61613?wireFormat=stomp");
>   while(true)
>   {
>     cms::Connection* connection = connectionFactory.createConnection(); 
>     cms::Session* session = connection->createSession(cms::Session::AUTO_ACKNOWLEDGE);
>     cms::Topic* topic = session->createTopic("topic");
>     cms::MessageProducer* producer = session->createProducer(topic);
>     delete producer;
>     delete topic;
>     delete session; 
>     delete connection;
>   }
>   return 0;
> }
> {code}
> The stack trace when it crashes:
> >	activemq-cppd.dll!activemq::io::BufferedInputStream::read()  Line 79 + 0x12 bytes
C++
>  	activemq-cppd.dll!activemq::connector::stomp::StompCommandReader::readStompHeaderLine()
 Line 194 + 0x19 bytes	C++
>  	activemq-cppd.dll!activemq::connector::stomp::StompCommandReader::readStompCommandHeader(activemq::connector::stomp::StompFrame
& frame={...})  Line 101	C++
>  	activemq-cppd.dll!activemq::connector::stomp::StompCommandReader::readCommand()  Line
59	C++
>  	activemq-cppd.dll!activemq::transport::IOTransport::run()  Line 166 + 0x19 bytes	C++
>  	activemq-cppd.dll!activemq::concurrent::Thread::runCallback(void * param=0x003ad328)
 Line 152 + 0x13 bytes	C++
>  	msvcr80d.dll!_callthreadstartex()  Line 348 + 0xf bytes	C
>  	msvcr80d.dll!_threadstartex(void * ptd=0x003adac0)  Line 331	C
>  	kernel32.dll!7c80b683() 	
>  	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]

> The line in BufferedInputStream::read is:
> char returnValue = buffer[head++];
> There is a local variable called bufferSize with a value of 1024. However, the value
of head is usually much larger than bufferSize (like more than 10000).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message