jain-sip icon indicating copy to clipboard operation
jain-sip copied to clipboard

EventScanner hands infinitely on stack shutdown

Open RomanValov opened this issue 1 year ago • 0 comments

Hi

please consider following minimal code example:

import javax.sip.*;

class Test implements SipListener {

    public static void main(String[] args) {
        try {
            SipFactory sipFactory = SipFactory.getInstance();
            sipFactory.setPathName("gov.nist");
            java.util.Properties properties = new java.util.Properties();
            properties.setProperty("javax.sip.STACK_NAME", "test");

            SipStack sipStack = sipFactory.createSipStack(properties);
            sipStack.stop();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    @Override
    public void processRequest(RequestEvent requestEvent) {
    }

    @Override
    public void processResponse(ResponseEvent responseEvent) {
    }

    @Override
    public void processTimeout(javax.sip.TimeoutEvent timeoutEvent) {
    }

    @Override
    public void processIOException(IOExceptionEvent exceptionEvent) {
    }

    @Override
    public void processTransactionTerminated(
            TransactionTerminatedEvent transactionTerminatedEvent) {
    }

    @Override
    public void processDialogTerminated(
            DialogTerminatedEvent dialogTerminatedEvent) {
    }
}

When executed this code hands forever. Thread dump shows that EventScanner thread is stuck:

"EventScannerThread" #11 prio=5 os_prio=0 cpu=0.82ms elapsed=2.13s tid=0x00007fc04c3e4000 nid=0x17 waiting on condition  [0x00007fc025efd000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
	- parking to wait for  <0x00000000b64cb608> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await([email protected]/AbstractQueuedSynchronizer.java:2081)
	at java.util.concurrent.LinkedBlockingQueue.take([email protected]/LinkedBlockingQueue.java:433)
	at gov.nist.javax.sip.EventScanner.run(EventScanner.java:512)
	at java.lang.Thread.run([email protected]/Thread.java:829)

Registering listener and listening points doesn't affect the issue.

RomanValov avatar Apr 15 '23 10:04 RomanValov