#20

UA: Opal Call Session fails to destroy codec on disconnect


    • Created on: Fri, May 23 (6 months ago)
    • Reported by: joegen
    • Assigned to: joegen
    • Milestone: 1.1.6
    • Status: Fixed
    • Priority: Normal (3)
    • Component:

    Bug Report from OpenSIPStack Mailing List:

    Joegen E. Baclor wrote:
    > Hmmn. Strange. Seems like the codec from the previous call has not been destroyed. Can you send me a maximum level log of two consecutive calls right after fresh startup of your SoftPhone?
    >
    > H.Kropf wrote:
    >
    >> Hi
    >>
    >>
    >>>> can you put a break-point in OpalTranscoder::ConvertFrames() and figure out where exactly it fails?
    >>>>
    >> I can :)
    >>
    >>
    >> bool OpalMediaPatch::Sink::WriteFrame(RTP_DataFrame & sourceFrame)
    >> {
    >> ......
    >> if (!primaryCodec->ConvertFrames(sourceFrame, intermediateFrames))
    >> {
    >> PTRACE failed”);
    >> return false;
    >> }
    >> ......
    >> }
    >>
    >> BOOL OpalTranscoder::ConvertFrames(const RTP_DataFrame & input, RTP_DataFrameList & output)
    >> {
    >> .......
    >> return Convert(input, output0);
    >> }
    >>
    >> BOOL OpalFlexiTranscoder::Convert( const RTP_DataFrame & input, RTP_DataFrame & output)
    >> {
    >> return m_Transcoder->Convert( input, output );
    >> }
    >>
    >> BOOL OpalFramedTranscoder::Convert(const RTP_DataFrame & input, RTP_DataFrame & output)
    >> {
    >> ....
    >> while (inputLength > 0)
    >> {
    >> ......
    >> if (!ConvertFrame(inputPtr, consumed, outputPtr, created))
    >> return FALSE;
    >> .......
    >> }
    >> .......
    >> }
    >>
    >> BOOL OpalFramedTranscoder::ConvertFrame(const BYTE * inputPtr, PINDEX & /consumed/, BYTE * outputPtr, PINDEX & /created/)
    >> {
    >> return ConvertFrame(inputPtr, outputPtr);
    >> }
    >>
    >>
    >>
    >> BOOL Opal_PCM_G729::ConvertFrame(const BYTE * src, BYTE * dst)
    >> {
    >> if (voiceAgeEncoderInUse != this) return FALSE; // !!!!!!!!!!!! <<<=== this place
    >> ......
    >> }
    >>
    >>
    >>
    >>
    >>> Hi,
    >>>
    >>> Are you a C++ developer? If so, can you put a break-point in OpalTranscoder::ConvertFrames() and figure out where exactly it fails?
    >>>
    >>> Joegen
    >>>
    >>> H.Kropf wrote:
    >>>
    >>>> Hello
    >>>>
    >>>> After a last update of library from CVS (2008-05-20), my softphone (on OSS library) makes only one successful call after start. In next calls there is no voice. In PTRACE-log there are many such records
    >>>>
    >>>> Media Patch:1eb9410 PWL: [CID=0×0000] Patch Media conversion (primary) failed
    >>>> Media Patch:1eb9410 PWL: [CID=0×0000] Patch Media conversion (primary) failed
    >>>> Media Patch:1eb9410 PWL: [CID=0×0000] Patch Media conversion (primary) failed
    >>>> Media Patch:1eb9410 PWL: [CID=0×0000] Patch Media conversion (primary) failed

  • Attachments        Take Screenshot Add File
    No attachments
    Ticket No. Relation Summary Status Action
    #21 Parent OPAL: Codec is not properly destroyed after disconnect Fixed  
    Activity
    • By joegen on May 23, 2008 @ 01:12am UTC *

      • attachment SIP Log added
    • By joegen on May 23, 2008 @ 01:13am UTC *

      • attachment PTLib Log added
    • By joegen on Jun 08, 2008 @ 02:56am UTC *

      • →  status changed from Accepted to Test

      A leak in OpalFlexiTranscoder proxy class maybe causing this behavior. OpalFlexiTranscoder was first introduced by Ilian Pinzon so that re-invites with a media channel change my allow the codec to be changed in mid session. OpalFlexiTranscoder, however, does not have a destructor override. This allowed the OpalTranscoder object it created in the heap to be forever lost. I have committed a patch for this in CVS and is ready for testing.

    • By joegen on Jun 20, 2008 @ 12:49am UTC *

      • →  status changed from Test to Fixed