You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Ryo Okubo (JIRA)" <ji...@apache.org> on 2014/11/10 09:38:33 UTC
[jira] [Updated] (TS-3156) Mutex[Try]Lock bool() operator change
and unused API removal
[ https://issues.apache.org/jira/browse/TS-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ryo Okubo updated TS-3156:
--------------------------
Attachment: fix-MutexLock.patch
The cause of above issue is probably calling pthread_mutex_lock() for destroyed mutex lock.
If a variable of ProxyMutex* is passed to MUTEX_LOCK(), it's destroyed when leaving that scope. For example, pthread_mutex_destroy() is called in MakeHttpProxyAcceptor():
{noformat}
(gdb) bt
#0 0x00007ffff7830e70 in pthread_mutex_destroy () from /lib64/libpthread.so.0
#1 0x00000000004e03da in ink_mutex_destroy (m=0xac7890) at ../lib/ts/ink_mutex.h:87
#2 0x00000000004e15c2 in ProxyMutex::free (this=0xac7880) at ../iocore/eventsystem/I_Lock.h:543
#3 0x00000000004e2f39 in Ptr<ProxyMutex>::~Ptr (this=0x7fffffffe3b0, __in_chrg=<value optimized out>) at ../lib/ts/Ptr.h:393
#4 0x0000000000520f17 in MutexLock::~MutexLock (this=0x7fffffffe3b0, __in_chrg=<value optimized out>) at ../iocore/eventsystem/I_Lock.h:465
#5 0x00000000005cea60 in MakeHttpProxyAcceptor (acceptor=..., port=..., nthreads=1) at HttpProxyServerMain.cc:230
#6 0x00000000005cec45 in init_HttpProxyServer (n_accept_threads=1) at HttpProxyServerMain.cc:270
#7 0x000000000052aded in main (argv=0x7fffffffe7a8) at Main.cc:1554
{noformat}
I tried to replace ProxyMutex* with Ptr<ProxyMutex>. It looks to work fine. @Powell, what do you think about fix-MutexLock.patch?
> Mutex[Try]Lock bool() operator change and unused API removal
> ------------------------------------------------------------
>
> Key: TS-3156
> URL: https://issues.apache.org/jira/browse/TS-3156
> Project: Traffic Server
> Issue Type: Improvement
> Components: Core
> Reporter: Powell Molleti
> Assignee: James Peach
> Priority: Minor
> Labels: review
> Fix For: 5.2.0
>
> Attachments: MutexLock-ats.patch, MutexLock-ats.patch, fix-MutexLock.patch
>
>
> Removed unused constructor in MutexLock along with set_and_take() method, had to change FORCE_PLUGIN_MUTEX() for that. Removed release() method.
> default bool and ! operator from both MutexLock and MutexTryLock with is_locked() API. Changes if (lock) to if (lock.is_locked()) across the code base.
> Ran make test will be performing more system testing. Posted before for early comments / feedback.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)