You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Andrei Gheorghe (JIRA)" <ji...@apache.org> on 2014/01/27 15:57:39 UTC

[jira] [Updated] (AMQCPP-532) Frequently deleting queue browser causes access violation

     [ https://issues.apache.org/jira/browse/AMQCPP-532?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andrei Gheorghe updated AMQCPP-532:
-----------------------------------

    Attachment: crash.cpp

This program crashes using the latest ActiveMQ-CPP version.

> Frequently deleting queue browser causes access violation
> ---------------------------------------------------------
>
>                 Key: AMQCPP-532
>                 URL: https://issues.apache.org/jira/browse/AMQCPP-532
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>    Affects Versions: 3.8.2
>         Environment: Windows
>            Reporter: Andrei Gheorghe
>            Assignee: Timothy Bish
>         Attachments: crash.cpp
>
>
> The following code should reproduce this issue :
> #include <activemq/library/ActiveMQCPP.h>
> #include <activemq/core/ActiveMQConnectionFactory.h>
> #include <activemq/commands/ActiveMQQueue.h>
> using namespace cms;
> int main()
> {
> 	try 
> 	{
> 	activemq::library::ActiveMQCPP::initializeLibrary();
> 	activemq::core::ActiveMQConnectionFactory connectionFactory( "tcp://localhost:61616" );
> 	auto connection = connectionFactory.createConnection();
> 	connection->start();
> 	auto session = connection->createSession( Session::SESSION_TRANSACTED );
> 	activemq::commands::ActiveMQQueue queue( "testqueue" ); //sometimes it doesn't crash if the queue is empty so it should have atleast a message
> 	while ( 1 )
> 	{
> 		auto queueBrowser = session->createBrowser( &queue, "" );
> 		auto enumeration = queueBrowser->getEnumeration();
> 	
> 		if ( enumeration->hasMoreMessages() )
> 			auto message = enumeration->nextMessage();
> 		delete queueBrowser;
> 	}
> 	}
> 	catch ( const std::exception& e )
> 	{
> 		std::string what = e.what(); //sometimes it throws an exception like "Monitor is still in use!"
> 	}
> 	while ( 1 ) {} //wait, sometimes an activemq thread fails
> }



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)