Status: New
Owner: ----
Labels: Type-Defect Priority-Medium Component-SS7 Roadmap-Fix
New issue 231 by [email protected]: Both sides Dialog Release leads
to a deadlock
http://code.google.com/p/jss7/issues/detail?id=231
What steps will reproduce the problem?
1. Create a service which calls Dialog.release
2. Create a client which sends Dialog.release
3. Try to execute them in parallel
What is the expected output? What do you see instead?
The Dialog should be released
What version of the product are you using? On what operating system?
2.0.0.BETA4
Please provide any additional information below.
One thread waits here:
owns: DialogImpl (id=487)
waiting for: CAPDialogCircuitSwitchedCallImpl (id=486)
CAPProviderImpl.onDialogReleased(Dialog) line: 690
TCAPProviderImpl.doRelease(DialogImpl) line: 385
TCAPProviderImpl.release(DialogImpl) line: 378
DialogImpl.setState(TRPseudoState) line: 1887
DialogImpl.release() line: 273
DialogImpl.processEnd(TCEndMessage, SccpAddress, SccpAddress) line: 1537
TCAPProviderImpl.onMessage(SccpDataMessage) line: 673
SccpRoutingControl.route(SccpAddressedMessageImpl) line: 506
SccpRoutingControl.translationFunction(SccpAddressedMessageImpl) line: 411
SccpRoutingControl.routeMssgFromMtp(SccpAddressedMessageImpl) line: 149
SccpStackImpl.onMtp3TransferMessage(Mtp3TransferPrimitive) line: 760
Mtp3UserPartBaseImpl$MsgTransferDeliveryHandler.run() line: 248
ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1110
ThreadPoolExecutor$Worker.run() line: 603 [local variables unavailable]
Thread.run() line: 722
The other thread waits here:
Thread [pool-32-thread-1] (Suspended)
owns: CAPDialogCircuitSwitchedCallImpl (id=486)
waited by: Thread [pool-37-thread-1] (Suspended)
Unsafe.park(boolean, long) line: not available [native method]
LockSupport.park(Object) line: 186
ReentrantLock$NonfairSync(AbstractQueuedSynchronizer).parkAndCheckInterrupt()
line: 834 [local variables unavailable]
ReentrantLock$NonfairSync(AbstractQueuedSynchronizer).acquireQueued(AbstractQueuedSynchronizer$Node,
int) line: 867
ReentrantLock$NonfairSync(AbstractQueuedSynchronizer).acquire(int) line:
1197
ReentrantLock$NonfairSync.lock() line: 214 [local variables
unavailable]
ReentrantLock.lock() line: 290 [local variables unavailable]
DialogImpl.send(TCEndRequest) line: 667
CAPProviderImpl.fireTCEnd(Dialog, boolean, ApplicationContextName,
CAPGprsReferenceNumber, boolean) line: 1153
CAPDialogCircuitSwitchedCallImpl(CAPDialogImpl).close(boolean) line:
302
CAPDialogCircuitSwitchedCallWrapper(CAPDialogWrapper<T>).close(boolean)
line: 149
Camel1INScpSbbImpl(CamelINScpSbb).capCloseDialog() line: 207
Camel1INScpSbbImpl(Camel1INScpSbb).terminateSession(boolean) line: 577
Camel1INScpSbbImpl(Camel1INScpSbb).terminateSession() line: 558
Camel1INScpSbbImpl(Camel1INScpSbb).eventCAPDisconnect(EventReportBCSMRequest,
ActivityContextInterface) line: 446
Camel1INScpSbbImpl(Camel1INScpSbb).onEventReportBCSMRequest(EventReportBCSMRequest,
ActivityContextInterface) line: 214
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
Method.invoke(Object, Object...) line: 601
SbbEntityImpl.invokeEventHandler(EventContext, ActivityContext,
EventContext) line: 481
EventRoutingTaskImpl.routeQueuedEvent() line: 379
EventRoutingTaskImpl.run() line: 126
EventRouterExecutorImpl$EventRoutingTaskStatsCollector.run() line: 73
ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1110
ThreadPoolExecutor$Worker.run() line: 603
Thread.run() line: 722
--