[reSIProcate] Is this the cause of random solaris cores from resip related to memory?
Alan Hawrylyshen
alan at jasomi.com
Fri Oct 28 08:31:44 CDT 2005
Sandeep,
It sure looks like this could be a real problem.
One thing that might be a good overall improvement would be to:
a) Create a class / abstraction for time services.
b) Implement the OS specific time calls within this class.
c) Provide a 'cheap' time interface for places that need rough time and
the more precise time can call through to the underlying OS.
By controlling access to the time functions in a single class, we can
either
use the MT safe routines or ensure serial access to those that are not.
A
On 27-Oct-05, at 18:05 , Sandeep Sharma wrote:
> Hello,
>
> I am using a resip version from April and seeing random cores on
> solaris
> under load. This is what I have found so far. Experts, please chime
> in..
>
> Running a MT application based on resiprocate on solaris multi-
> processor
> box results in random core dumps. On running purify, I see lot of MRE
> (malloc re-entered). Doing some investigation, found a Sun article
> that
> says that the following calls are not MT safe and should not be
> used. I
> did a quick grep and found resip does use localtime and gmtime
> (without
> the _r at the end). I have not checked the others..
> This is the link if anyone is interested..
> http://developers.sun.com/solaris/articles/multithreaded.html
>
> --------
> ctime, localtime, gmtime, asctime, strtok, gethostbyname,
> gethostbyaddr,
> getservbyname, getservbyport, getprotobyname, getnetbyname,
> getnetbyaddr, getrpcbyname, getrpcbynumber, getrpcent, rand, ctermid,
> tmpnam, readdir, getlogin, getpwent, getpwnam, getpwuid, getspent,
> fgetspent, getspnam, getgrnam, getgrgid, getnetgrent, getrpcbyname,
> tempnam, fgetpwent, fgetgrent, ecvt, gcvt, getservent, gethostent,
> getgrent, fcvt
> --------
>
> Does it make sense that my cores may be caused by the above? I have
> been
> seeing random core dumps related to malloc and free on solaris, and
> most
> of them have been related to:
>
> This is occurring while in thread 28:
> tzcpy [time_comm.c]
> getzname [time_comm.c]
> _ltzset_u [time_comm.c]
> mktime [libc.so.1]
> strftime [libc.so.1]
> resip::Data&resip::Log::timestamp(resip::Data&)
> [Log.cxx:280]
> resip::Data resip::Log::timestamp() [Log.cxx:245]
> std::basic_ostream<char,std::char_traits<char>
>
>> &resip::Log::tags(resip::Log::Level,const resip::Subsystem&,const
>>
> char*,int,std::basic_ostream<char,std::char_traits<char> >&)
> [Log.cxx:227]
> void
> resip::ConnectionBase::preparseNewBytes
> (int,resip::Fifo<resip::TransactionMessage>&) [ConnectionBase.cxx:191]
> int
> resip::Connection::read(resip::Fifo<resip::TransactionMessage>&)
> [Connection.cxx:128]
> void
> resip::TcpBaseTransport::processSomeReads(resip::FdSet&)
> [TcpBaseTransport.cxx:146]
> void resip::TcpBaseTransport::process(resip::FdSet&)
> [TcpBaseTransport.cxx:270]
> void resip::TransportSelector::process(resip::FdSet&)
> [TransportSelector.cxx:188]
> void resip::TransactionController::process(resip::FdSet&)
> [TransactionController.cxx:79]
> void resip::SipStack::process(resip::FdSet&)
> [SipStack.cxx:400]
>
>
>
>
> --
> Sandeep Sharma <ssharma at jabber.com>
>
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel at list.sipfoundry.org
> https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
>
>
More information about the resiprocate-devel
mailing list