Menu

#39 Hangup on Halef speaking requires restart

1.0
closed
None
2015-08-24
2015-06-05
No

Infinite OpenVXML loops (calls that require user to terminate calls) require HALEF restart.

Discussion

  • David Suendermann-Oeft

    • summary: Infinite OpenVXML loops (calls that require user to terminate calls) require HALEF restart --> Hangup on Halef speaking requires restart
    • assigned_to: Vikram Ramanarayanan --> Patrick Lange
     
  • David Suendermann-Oeft

    The issue is more global than anticipated: Whenever a caller is hanging up while Halef is speaking, Halef will crash in the next call (before even playing any prompt). Cairo throws

    Exception in thread "RTPEventHandler" java.lang.NullPointerException
    at org.speechforge.cairo.rtp.server.RTPStreamReplicator.streamInactive(RTPStreamReplicator.java:160)
    at org.speechforge.cairo.rtp.RTPConsumer.update(RTPConsumer.java:265)
    at com.sun.media.rtp.RTPEventHandler.processEvent(RTPEventHandler.java:62)
    at com.sun.media.rtp.RTPEventHandler.dispatchEvents(RTPEventHandler.java:96)
    at com.sun.media.rtp.RTPEventHandler.run(RTPEventHandler.java:115)

    JVXML says
    [java] 2015-06-24 02:11:36,081 ERROR interpreter.JVoiceXmlSession [2055fc8a-c35d-4eae-a848-b71e89f0343b]: error processing application 'Unknown application'
    [java] org.jvoicexml.event.error.NoresourceError: error.noresource: Pool exhausted
    [java] at org.jvoicexml.implementation.pool.KeyedResourcePool.borrowObject(KeyedResourcePool.java:119) ~[classes/:?]
    [java] at org.jvoicexml.implementation.jvxml.JVoiceXmlImplementationPlatform.getExternalResourceFromPool(JVoiceXmlImplementationPlatform.java:774) ~[classes/:?]
    [java] at org.jvoicexml.implementation.jvxml.JVoiceXmlImplementationPlatform.getSystemOutput(JVoiceXmlImplementationPlatform.java:298) ~[classes/:?]
    [java] at org.jvoicexml.implementation.jvxml.JVoiceXmlPromptAccumulator.renderPrompts(JVoiceXmlPromptAccumulator.java:123) ~[classes/:?]
    [java] at org.jvoicexml.implementation.jvxml.JVoiceXmlImplementationPlatform.renderPrompts(JVoiceXmlImplementationPlatform.java:1111) ~[classes/:?]
    [java] at org.jvoicexml.interpreter.FormInterpretationAlgorithm.queuePrompts(FormInterpretationAlgorithm.java:807) ~[classes/:?]
    [java] at org.jvoicexml.interpreter.FormInterpretationAlgorithm.collect(FormInterpretationAlgorithm.java:620) ~[classes/:?]
    [java] at org.jvoicexml.interpreter.FormInterpretationAlgorithm.mainLoop(FormInterpretationAlgorithm.java:432) ~[classes/:?]
    [java] at org.jvoicexml.interpreter.VoiceXmlInterpreter.process(VoiceXmlInterpreter.java:272) ~[classes/:?]
    [java] at org.jvoicexml.interpreter.VoiceXmlInterpreterContext.interpret(VoiceXmlInterpreterContext.java:798) ~[classes/:?]
    [java] at org.jvoicexml.interpreter.VoiceXmlInterpreterContext.process(VoiceXmlInterpreterContext.java:484) ~[classes/:?]
    [java] at org.jvoicexml.interpreter.JVoiceXmlSession.run(JVoiceXmlSession.java:328) [classes/:?]
    [java] Caused by: java.util.NoSuchElementException: Pool exhausted
    [java] at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1110) ~[commons-pool-1.6.jar:1.6]
    [java] at org.jvoicexml.implementation.pool.KeyedResourcePool.borrowObject(KeyedResourcePool.java:117) ~[classes/:?]
    [java] ... 11 more

     
  • Patrick L. Lange

    This is how the end of a successfull call should look in cairo.

    2015-06-24 03:49:36,816 INFO ~.~.~.~.SipListenerImpl [EventScannerThread]: Got a dialog terminated event
    2015-06-24 03:49:39,170 DEBUG ~.~.~.~.RTPConsumer [RTPEventHandler]: ReceiveStreamEvent received: javax.media.rtp.event.InactiveReceiveStreamEvent[source = RTPManager
    SSRCCache com.sun.media.rtp.SSRCCache@11ac3cb6
    Dataport 42050
    Controlport 42051
    Address 141.31.8.71
    RTPForwarder com.sun.media.rtp.util.PacketForwarder@42c5d9ca
    RTPDemux com.sun.media.rtp.RTPDemultiplexer@4b5d7f05]

    2015-06-24 03:50:00,768 DEBUG ~.~.~.~.SipListenerImpl [EventScannerThread]: Got a transaction terminated event

     
  • Vikram Ramanarayanan

    I tried hanging up on HALEF (ext. 7703) in the middle of the first question, but when I called in again after that, I had no problem going through the application. However, this time, when I hung up in the middle of a "PlayPrompt" block (this is what first plays when the call is redirected to the Random Number Generator application from the Peanuts application), that's when I encountered a NullPointer exception in Cairo:


    2015-06-25 20:51:43,861 DEBUG ~.~.~.~.SipListenerImpl [EventScannerThread]: Got a transaction terminated event
    2015-06-25 20:51:50,561 DEBUG ~.~.~.~.RTPConsumer [RTPEventHandler]: ReceiveStreamEvent received: javax.media.rtp.event.InactiveReceiveStreamEvent[source = RTPManager
    SSRCCache com.sun.media.rtp.SSRCCache@2062f62f
    Dataport 42050
    Controlport 42051
    Address 141.31.8.60
    RTPForwarder com.sun.media.rtp.util.PacketForwarder@41109845
    RTPDemux com.sun.media.rtp.RTPDemultiplexer@287cfb62]

    2015-06-25 20:51:50,571 DEBUG ~.~.~.~.~.RTPStreamReplicator [RTPEventHandler]: Closing RTP processor for SSRC=799188930
    2015-06-25 20:51:50,579 DEBUG ~.~.~.~.ProcessorStarter [JMF thread: SendEventQueue: com.sun.media.processor.unknown.Handler]: controllerUpdate(): ControllerEvent received: javax.media.StopEvent[source=com.sun.media.processor.unknown.Handler@5780b29a,previous=Started,current=Prefetched,target=Prefetched,mediaTime=javax.media.Time@18e0a18e]
    Exception in thread "RTPEventHandler" java.lang.NullPointerException
    at org.speechforge.cairo.rtp.server.RTPStreamReplicator.streamInactive(RTPStreamReplicator.java:160)
    at org.speechforge.cairo.rtp.RTPConsumer.update(RTPConsumer.java:265)
    at com.sun.media.rtp.RTPEventHandler.processEvent(RTPEventHandler.java:62)
    at com.sun.media.rtp.RTPEventHandler.dispatchEvents(RTPEventHandler.java:96)
    at com.sun.media.rtp.RTPEventHandler.run(RTPEventHandler.java:115)
    2015-06-25 20:51:50,587 DEBUG ~.~.~.~.ProcessorStarter [JMF thread: SendEventQueue: com.sun.media.processor.unknown.Handler]: controllerUpdate(): ControllerEvent received: javax.media.ControllerClosedEvent[source=com.sun.media.processor.unknown.Handler@5780b29a]


    So it might be the case that hanging up in the middle of a "Question" block (where the system is expecting a recognition hypothesis) when HALEF is speaking is okay, but doing the same thing in the middle of a "PlayPrompt" block (where only the TTS needs to do something) is not? Will have to look into this further...

     

    Last edit: Vikram Ramanarayanan 2015-06-25
  • Patrick L. Lange

    I tried out two cases in the Kaldi streaming implementation:
    -Hanging up when the system speaks and expects a response (first question)
    -Hanging up when the system uses only playback after recognition took place

    Both cases do NOT crash the system.

     
  • Patrick L. Lange

    So the problem might be specific to the Sphinx JSGF implementation or to the specific call flow of the item in question.

     
  • Vikram Ramanarayanan

    Okay, so I called into the system many times and stress-tested 3 hypotheses related to this problem, among many other cases:

    • The PlayPrompt block issue.
    • Something particular to the random number generator
    • Something that messes up if you transfer to another application via a Submit block.

    And what I see is that this problem is most likely due to the first issue, i.e., a PlayPrompt block; this is not particular to the random number generator. Whenever you hang up in the middle of a PlayPrompt block, we get the Cairo and JVMXL error logs as above and the call gets disconnected (after transferring you to the extension, of course).

     
  • Patrick L. Lange

    It is a JVXML bug not a Cairo bug. JVXML is not closing the session and thus in the next call the resource is not available.

     
  • Patrick L. Lange

    I think this is not related to the bug described in this ticket.

     
    • Vikram Ramanarayanan

      Opened a new bug for this.

       
  • Patrick L. Lange

    Fixed by jvxml hack that prevents queuing of multiple tts prompts at the same time. Monitor if this resolved all related issues.

     
  • Patrick L. Lange

    • status: open --> pending
     
  • Patrick L. Lange

    • status: pending --> closed
     

Log in to post a comment.

MongoDB Logo MongoDB
Gen AI apps are built with MongoDB Atlas
Atlas offers built-in vector search and global availability across 125+ regions. Start building AI apps faster, all in one place.
Try Free →