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

Albert Strasheim commented on AMQCPP-128:
-----------------------------------------

Another random thought: maybe something, somewhere needs to be made volatile.

http://www.ddj.com/dept/cpp/184403766


> Transacted session crashes or loses messages
> --------------------------------------------
>
>                 Key: AMQCPP-128
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-128
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>    Affects Versions: 2.1
>            Reporter: Albert Strasheim
>            Assignee: Timothy Bish
>             Fix For: 2.1
>
>         Attachments: main.cpp
>
>
> Attached is some code that does a few things with transacted sessions, in a 
> loop. This sometimes reproduces the crash I mentioned in one of my latest 
> comments in AMQCPP-122.
> I'm testing on Windows XP SP2 with Visual Studio 8 on Core 2 Duo machine.
> I've also seen all of the following happen in subsequent runs of the code:
> - Where I expect to receive a message, nothing turns up (even with a long 
> timeout period). Cleanup goes fine.
> - Where I expect to receive a message, nothing turns up. Cleanup hangs.
> - Sometimes it prints:
> Mutex::unlock - Failed, not Lock Owner!
>         FILE: ..\src\main\activemq\concurrent\Mutex.cpp, LINE: 83
>         FILE: activemq-cpp\src\main\activemq/concurrent/Lock.h, LINE: 110
>         FILE: ..\src\main\activemq\core\ActiveMQConsumer.cpp, LINE: 443
>         FILE: ..\src\main\activemq\core\ActiveMQSessionExecutor.cpp, LINE: 192
> and keeps on going
> - Sometimes it crashes with the following when running a Debug build on 
> Windows:
> ---------------------------
> Microsoft Visual C++ Debug Library
> ---------------------------
> Debug Assertion Failed!
> Program: ...
> File: C:\Program Files\Microsoft Visual Studio 8\VC\include\list
> Line: 776
> Expression: list erase iterator outside range
> For information on how your program can cause an assertion
> failure, see the Visual C++ documentation on asserts.
> (Press Retry to debug the application)
> ---------------------------
> Abort   Retry   Ignore   
> ---------------------------
> - Sometimes it crashes with something along these lines:
> ---------------------------
> vs2005-activemq-example.exe - Application Error
> ---------------------------
> The instruction at "0x0053dd80" referenced memory at "0xdddddddd". The memory 
> could not be "read".
> Click on OK to terminate the program
> Click on CANCEL to debug the program
> ---------------------------
> OK   Cancel   
> ---------------------------
> The relevant thread's stack trace looks like this:
> >     vs2005-activemq-example.exe!activemq::core::ActiveMQSession::close()  
> > Line 110 + 0x8 bytes      C++
>       
> vs2005-activemq-example.exe!activemq::core::ActiveMQSession::~ActiveMQSession()
>   Line 74 + 0x8 bytes    C++
>       vs2005-activemq-example.exe!activemq::core::ActiveMQSession::`scalar 
> deleting destructor'()  + 0xf bytes        C++
>       vs2005-activemq-example.exe!test_transaction(const 
> std::basic_string<char,std::char_traits<char>,std::allocator<char> > & 
> url="tcp://localhost:61613?wireFormat=stomp")  Line 78 + 0x37 bytes   C++
>       vs2005-activemq-example.exe!main(int argc=1, char * * argv=0x003558c8)  
> Line 85 + 0x30 bytes    C++
>       vs2005-activemq-example.exe!__tmainCRTStartup()  Line 597 + 0x19 bytes  
> C
>       vs2005-activemq-example.exe!mainCRTStartup()  Line 414  C
> It crashes where it's doing resource->close() because resource points to 
> garbage.

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

Reply via email to