< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index  

Re: [reSIProcate] [spam] Re: [spam] Re: static StatisticsMessage::AtomicPayload appStats; in poll() may not thread safe


It is fixed on main.

On 10/24/06, maodonghu <hhmmdd@xxxxxxx> wrote:

Hi, resip

  anyone can fix this bug?

======== 2006-10-19 01:11:28   ========



hi          maodonghu,

   well, i'm sorry , i doesn't careful          inspection with your question,

   that is          a bug with the code, em. may be appStats can move          
into static global area. I think that appStats can initialize first. may be to 
avert the          thread safe issue.

   btw,          why you use multi-stack in your process ?

             sincerely,
    jinti


在06-10-18, maodonghu <hhmmdd@xxxxxxx> 写道:
>
> Hi, shen            jinti
>
>   By the way, I use Pentinum D, it has 2            CPU, so the exception may 
be easy to            encounter.
>
>
> ======== 2006-10-18 10:37:34             ========
>
>
>
> hi                    maodonghu,
>
>     you must compile                    with  /MD or /MT option in you all    
                project.
>
>                        jinti
>
>
>
> 在06-10-18,maodonghu <                    hhmmdd@xxxxxxx> 写道:
>
> > hi,
> >
> > I                      found my multi-thread program that using resiprocate 
will                      crashed sometimes when startup, the place is
> >
> > void
> > StatisticsMessage::AtomicPayload::loadIn(const                      
Payload& payload)
> > {
> >    Lock                      lock(mMutex); // --> here cause crash, because 
the mMutex                      may have not finished its constructor yet.
> >                         Payload::operator=(payload);
> > }
> >
> > then I research                      the source code, I                     
 found
> >
> > void
> > StatisticsManager::poll()
> > {
> >                         // get snapshot data now..
> >    tuFifoSize =                      
mStack.mTransactionController.getTuFifoSize();
> >                         transportFifoSizeSum =                      
mStack.mTransactionController.sumTransportFifoSizes();
> >                         transactionFifoSize =                      
mStack.mTransactionController.getTransactionFifoSize();
> >                         activeTimers =                      
mStack.mTransactionController.getTimerQueueSize();
> >                         activeClientTransactions =                      
mStack.mTransactionController.getNumClientTransactions();
> >                         activeServerTransactions =                      
mStack.mTransactionController.getNumServerTransactions();
> >
> >                         static StatisticsMessage::AtomicPayload appStats; // 
-->                      here may not thread safe
> >                         appStats.loadIn(*this);
> >
> >    // let the app                      do what it wants with it
> >                         mStack.post(StatisticsMessage(appStats));
> > }
> >
> >
> > Because                      I have multi-SipStacks in my program, so I 
have                      multi-StackThread, I think the usage of static local        
              variable here may not thread safe, appStats should be a                 
     static member of class StatisticsManager.
> >
> > the MSDN                      help also tell us:
> >
> > Note
> > Assigning to a static                      local variable is not thread 
safe and is not recommended as                      a programming practice.
> >
> >
> >
> > maodonghu
> > hhmmdd@xxxxxxx
> > 2006-10-18
> >
> > _______________________________________________
> > resiprocate-devel                      mailing list
> > resiprocate-devel@xxxxxxxxxxxxxxxxxxx
> > https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
>
>
>
>
> = = = = = = = = = = = = = = = = = = = = = =
>
>               maodonghu
>               hhmmdd@xxxxxxx
>                2006-10-18
>




= = = = = = = = = = = = = = = = = = = = = =

              maodonghu
              hhmmdd@xxxxxxx
               2006-10-24

_______________________________________________
resiprocate-devel mailing list
resiprocate-devel@xxxxxxxxxxxxxxxxxxx
https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel