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

Timothy Bish resolved AMQNET-488.
---------------------------------

    Resolution: Fixed
      Assignee: Timothy Bish  (was: Jim Gomes)

Fixed

> Deadlock in InactivityMonitor when using Failover
> -------------------------------------------------
>
>                 Key: AMQNET-488
>                 URL: https://issues.apache.org/jira/browse/AMQNET-488
>             Project: ActiveMQ .Net
>          Issue Type: Bug
>          Components: ActiveMQ
>    Affects Versions: 1.6.2, 1.6.3
>         Environment: ActiveMQ 5.10.0 on Windows Server 2012
> Apache.NMS.ActiveMQ 6.2 on .Net 4.5 + Windows 7
>            Reporter: Laurence Pike
>            Assignee: Timothy Bish
>            Priority: Critical
>             Fix For: 1.6.4, 1.7.0
>
>         Attachments: AMQNET-488-CompositeTaskRunner.cs.patch, 
> AMQNET-488-CompositeTaskRunnerTest.cs.patch
>
>
> Can occur when FailoverTransport is disposing the transport when the 
> inactivity monitor fires. Deadlock between InactivityMonitor.monitor and 
> CompositeTaskRunner.mutex.
> Stack traces for deadlock:
> mscorlib.dll!System.Threading.Monitor.Enter(object obj, ref bool lockTaken)   
> Unknown
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.InactivityMonitor.StopMonitorThreads()
>  Line 381 C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.InactivityMonitor.OnException(Apache.NMS.ActiveMQ.Transport.ITransport
>  sender, System.Exception command) Line 310       C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransport.Oneway(Apache.NMS.ActiveMQ.Commands.Command
>  command) Line 146  C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.InactivityMonitor.Oneway(Apache.NMS.ActiveMQ.Commands.Command
>  command) Line 294 C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.InactivityMonitor.AsyncWriteTask.Iterate()
>  Line 474     C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Threads.CompositeTaskRunner.Iterate()
>  Line 194    C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Threads.CompositeTaskRunner.Run() 
> Line 149        C#
> mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state)  
> Unknown
> mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext
>  executionContext, System.Threading.ContextCallback callback, object state, 
> bool preserveSyncCtx) Unknown
> mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext
>  executionContext, System.Threading.ContextCallback callback, object state, 
> bool preserveSyncCtx) Unknown
> mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext
>  executionContext, System.Threading.ContextCallback callback, object state)   
>     Unknown
> mscorlib.dll!System.Threading.ThreadHelper.ThreadStart()      Unknown
> ============================================================================================================================
> mscorlib.dll!System.Threading.Monitor.Enter(object obj, ref bool lockTaken)   
> Unknown
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Threads.CompositeTaskRunner.RemoveTask(Apache.NMS.ActiveMQ.Threads.CompositeTask
>  task) Line 65    C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.InactivityMonitor.StopMonitorThreads()
>  Line 401 C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.InactivityMonitor.Stop()
>  Line 223       C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.TransportFilter.Stop() 
> Line 196 C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.DisposeTransport(Apache.NMS.ActiveMQ.Transport.ITransport
>  transport) Line 1521       C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.HandleTransportFailure(System.Exception
>  e) Line 454  C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.Oneway(Apache.NMS.ActiveMQ.Commands.Command
>  command) Line 815        C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.TransportFilter.Oneway(Apache.NMS.ActiveMQ.Commands.Command
>  command) Line 82    C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.MutexTransport.Oneway(Apache.NMS.ActiveMQ.Commands.Command
>  command) Line 69     C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Transport.ResponseCorrelator.Oneway(Apache.NMS.ActiveMQ.Commands.Command
>  command) Line 54 C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Connection.Oneway(Apache.NMS.ActiveMQ.Commands.Command
>  command) Line 883  C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Session.Session(Apache.NMS.ActiveMQ.Connection
>  connection, Apache.NMS.ActiveMQ.Commands.SessionId sessionId, 
> Apache.NMS.AcknowledgementMode acknowledgementMode) Line 72  C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Connection.CreateActiveMQSession(Apache.NMS.AcknowledgementMode
>  ackMode) Line 594 C#
> Apache.NMS.ActiveMQ.dll!Apache.NMS.ActiveMQ.Connection.CreateSession(Apache.NMS.AcknowledgementMode
>  sessionAcknowledgementMode) Line 588      C#
> [Private code sending message in new session]



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to