Arrow_left   Arrow_right
 
  #20

UA: Opal Call Session fails to destroy codec on disconnect

    • Created on: Fri, 23 May 2008 (over 3 years ago)
    • Reported by: joegen
    • Assigned to: joegen
    • Milestone: -
    • 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(1, "Patch\tMedia conversion (primary) failed");
    >> return false;
    >> }
    >> ......
    >> }
    >>
    >> BOOL OpalTranscoder::ConvertFrames(const RTP_DataFrame & input, RTP_DataFrameList & output)
    >> {
    >> .......
    >> return Convert(input, output[0]);
    >> }
    >>
    >> 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=0x0000] Patch Media conversion (primary) failed
    >>>> Media Patch:1eb9410 PWL: [CID=0x0000] Patch Media conversion (primary) failed
    >>>> Media Patch:1eb9410 PWL: [CID=0x0000] Patch Media conversion (primary) failed
    >>>> Media Patch:1eb9410 PWL: [CID=0x0000] Patch Media conversion (primary) failed
  • Followers
     
    Ico-users joegen (Assigned To) 
     
    Attachments
    No attachments
    Associations
     
    Ticket No. Relation Summary Status Action
    #21 Parent OPAL: Codec is not properly destroyed after disconnect Fixed  
    Activity
     
    User picture

          on May 23, 2008 @ 06:12AM UTC * By joegen

    • *attachment* SIP Log added
    User picture

          on May 23, 2008 @ 06:13AM UTC * By joegen

    • *attachment* PTLib Log added
    User picture

          on Jun 08, 2008 @ 08:56AM UTC * By joegen

    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.
    User picture

          on Jun 20, 2008 @ 06:49AM UTC * By joegen

    Status changed from Test to Fixed
    Time Expenditure
    Loading