qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2] QemuMutex: support --enable-debug-mutex


From: Peter Xu
Subject: Re: [Qemu-devel] [PATCH v2] QemuMutex: support --enable-debug-mutex
Date: Thu, 19 Apr 2018 11:13:35 +0800
User-agent: Mutt/1.9.1 (2017-09-22)

On Thu, Apr 19, 2018 at 09:56:31AM +0800, Fam Zheng wrote:
> On Wed, 04/18 17:06, Peter Xu wrote:
> > We have had some tracing tools for mutex but it's not easy to use them
> > for e.g. dead locks.  Let's provide "--enable-debug-mutex" parameter
> > when configure to allow QemuMutex to store the last owner that took
> > specific lock.  It might be extremely easy to use this tool to debug
> > deadlocks since we can directly know who took the lock then as long as
> > we can have a gdb attached to the process.
> > 
> > CC: Paolo Bonzini <address@hidden>
> > CC: Stefan Hajnoczi <address@hidden>
> > CC: Fam Zheng <address@hidden>
> > Signed-off-by: Peter Xu <address@hidden>
> > ---
> > v2:
> > - fix "--disable-debug-mutex" not working..
> > ---
> >  configure                   | 10 ++++++++++
> >  include/qemu/thread-posix.h |  4 ++++
> >  util/qemu-thread-posix.c    |  4 ++++
> >  3 files changed, 18 insertions(+)
> > 
> > diff --git a/configure b/configure
> > index 0a19b033bc..a80af735b2 100755
> > --- a/configure
> > +++ b/configure
> > @@ -451,6 +451,7 @@ jemalloc="no"
> >  replication="yes"
> >  vxhs=""
> >  libxml2=""
> > +debug_mutex="no"
> >  
> >  supported_cpu="no"
> >  supported_os="no"
> > @@ -1374,6 +1375,10 @@ for opt do
> >    ;;
> >    --disable-git-update) git_update=no
> >    ;;
> > +  --enable-debug-mutex) debug_mutex=yes
> > +  ;;
> > +  --disable-debug-mutex) debug_mutex=no
> > +  ;;
> >    *)
> >        echo "ERROR: unknown option $opt"
> >        echo "Try '$0 --help' for more information"
> > @@ -1631,6 +1636,7 @@ disabled with --disable-FEATURE, default is enabled 
> > if available:
> >    crypto-afalg    Linux AF_ALG crypto backend driver
> >    vhost-user      vhost-user support
> >    capstone        capstone disassembler support
> > +  debug-mutex     mutex debugging support
> >  
> >  NOTE: The object files are built at the place where configure is launched
> >  EOF
> > @@ -5874,6 +5880,7 @@ echo "avx2 optimization $avx2_opt"
> >  echo "replication support $replication"
> >  echo "VxHS block device $vxhs"
> >  echo "capstone          $capstone"
> > +echo "mutex debugging   $debug_mutex"
> >  
> >  if test "$sdl_too_old" = "yes"; then
> >  echo "-> Your SDL version is too old - please upgrade to have SDL support"
> > @@ -6602,6 +6609,9 @@ fi
> >  if test "$capstone" != "no" ; then
> >    echo "CONFIG_CAPSTONE=y" >> $config_host_mak
> >  fi
> > +if test "$debug_mutex" = "yes" ; then
> > +  echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
> > +fi
> >  
> >  # Hold two types of flag:
> >  #   CONFIG_THREAD_SETNAME_BYTHREAD  - we've got a way of setting the name 
> > on
> > diff --git a/include/qemu/thread-posix.h b/include/qemu/thread-posix.h
> > index f3f47e426f..fd27b34128 100644
> > --- a/include/qemu/thread-posix.h
> > +++ b/include/qemu/thread-posix.h
> > @@ -12,6 +12,10 @@ typedef QemuMutex QemuRecMutex;
> >  
> >  struct QemuMutex {
> >      pthread_mutex_t lock;
> > +#ifdef CONFIG_DEBUG_MUTEX
> > +    const char *file;
> > +    int line;
> > +#endif
> 
> These look quite cheap, why we need a configure option to enable it?

Yeah; I am not 100% sure about whether it's cheap or not, hence with
that.  I can remove that part if we are sure we want it always.

-- 
Peter Xu



reply via email to

[Prev in Thread] Current Thread [Next in Thread]