Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jan Kratochvil <jan.kratochvil@redhat.com>
To: Khoo Yit Phang <khooyp@cs.umd.edu>
Cc: Hui Zhu <teawater@gmail.com>,
	gdb-patches@sourceware.org,
	       David Malcolm <dmalcolm@redhat.com>
Subject: Re: [patch] Re: Disable -lmcheck when Python has threads (Re: [BUG] gdb crash when "python import gtk")
Date: Fri, 31 Aug 2012 08:14:00 -0000	[thread overview]
Message-ID: <20120831081353.GA23421@host2.jankratochvil.net> (raw)
In-Reply-To: <5567AD5F-AB82-4002-8A36-BFFF776093BD@cs.umd.edu>

On Fri, 31 Aug 2012 03:32:06 +0200, Khoo Yit Phang wrote:
> 	Do not enable -lmcheck by default when Python is enabled with
> 	threading support.
> 	* configure.ac: (python_has_threads) New variable, by testing
> 	if WITH_THREAD is defined in Python.h.
> 	Move --enable-lmcheck after --with-python.
> 	Do not enable -lmcheck by default if python_has_threads=yes.
> 	Warn if --enable-lmcheck=yes and python_has_threads=yes.
> 	* configure: Regenerate.

OK with the changes below.

Be sure to use autoconf-2.64 so that configure gets regenerated without
unrelated version changes.


> diff --git a/gdb/configure.ac b/gdb/configure.ac
> --- a/gdb/configure.ac
> +++ b/gdb/configure.ac
> @@ -645,28 +645,6 @@
>  AC_SUBST(READLINE_CFLAGS)
>  AC_SUBST(READLINE_TEXI_INCFLAG)
>  
> -# Provide a --enable-libmcheck/--disable-libmcheck set of options
> -# allowing a user to enable this option even when building releases,
> -# or to disable it when building a snapshot.
> -AC_ARG_ENABLE(libmcheck,
> -  AS_HELP_STRING([--enable-libmcheck],
> -                 [Try building GDB with -lmcheck if available]),
> -  [case "${enableval}" in
> -     yes | y) ENABLE_LIBMCHECK="yes" ;;
> -     no | n)  ENABLE_LIBMCHECK="no" ;;
> -     *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmcheck) ;;
> -   esac])
> -
> -# Enable -lmcheck by default (it provides cheap-enough memory mangling),
> -# but turn it off for releases.
> -if test -z "${ENABLE_LIBMCHECK}" && $development; then
> -    ENABLE_LIBMCHECK=yes
> -fi
> -
> -if test "$ENABLE_LIBMCHECK" = "yes" ; then
> -  AC_CHECK_LIB(mcheck, main)
> -fi
> -
>  # Generate jit-reader.h
>  
>  # This is typedeffed to GDB_CORE_ADDR in jit-reader.h
> @@ -1017,6 +995,18 @@
>             fi
>             ;;
>    esac
> +

Put here a comment with reference to the Python issue why '-m threading' is
not used.


> +  AC_MSG_CHECKING(whether python supports threads)
> +  saved_CPPFLAGS="${CPPFLAGS}"
> +  CPPFLAGS="${PYTHON_CPPFLAGS}"
> +  AC_PREPROC_IFELSE(AC_LANG_SOURCE([[
> +#include <Python.h>
> +#ifndef WITH_THREAD
> +#error
> +#endif

A nitpick but the indentation should be:
#ifndef WITH_THREAD
# error
#endif


> +  ]]), [python_has_threads=yes], [python_has_threads=no])

Revert the condition.  If for any reason the compilation fails then it is
safer to default to 'python_has_threads=yes' than to 'no'.


> +  AC_MSG_RESULT(${python_has_threads})
> +  CPPFLAGS="${saved_CPPFLAGS}"
>  else
>    # Even if Python support is not compiled in, we need to have these files
>    # included.
> @@ -1028,6 +1018,34 @@
>  AC_SUBST(PYTHON_CPPFLAGS)
>  AC_SUBST(PYTHON_LIBS)
>  
> +# Provide a --enable-libmcheck/--disable-libmcheck set of options
> +# allowing a user to enable this option even when building releases,
> +# or to disable it when building a snapshot.
> +AC_ARG_ENABLE(libmcheck,
> +  AS_HELP_STRING([--enable-libmcheck],
> +                 [Try building GDB with -lmcheck if available]),
> +  [case "${enableval}" in
> +     yes | y) ENABLE_LIBMCHECK="yes" ;;
> +     no | n)  ENABLE_LIBMCHECK="no" ;;
> +     *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmcheck) ;;
> +   esac])
> +
> +# Enable -lmcheck by default (it provides cheap-enough memory mangling),
> +# but turn it off if Python is enabled with threads, and for releases.

Here should be also comment with the PR libc/9939 to explain why to "turn it
off if Python is enabled with threads".


> +if test -z "${ENABLE_LIBMCHECK}" \
> +        -a \( "${have_libpython}" = "no" \
> +	     -o "${python_has_threads}" = "no" \) \
> +    && $development; then
> +  ENABLE_LIBMCHECK=yes
> +fi
> +
> +if test "$ENABLE_LIBMCHECK" = "yes" ; then
> +  if test "${have_libpython}" != "no" -a "${python_has_threads}" = "yes" ; then
> +    AC_MSG_WARN(--enable-libmcheck may lead to spurious crashes if threads are used in python)
> +  fi
> +  AC_CHECK_LIB(mcheck, main)
> +fi
> +
>  # ------------------------- #
>  # Checks for header files.  #
>  # ------------------------- #


Thanks,
Jan


  reply	other threads:[~2012-08-31  8:14 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CANFwon0wEXd+40H85veHyRTg+itYyL2jjgsCMYByxk5K0MTLHA@mail.gmail.com>
     [not found] ` <20120719073959.GA10044@host2.jankratochvil.net>
     [not found]   ` <A681786A-58A1-41E6-8410-8EBD8330E6BE@cs.umd.edu>
2012-08-30 16:43     ` Jan Kratochvil
2012-08-30 18:05       ` Khoo Yit Phang
2012-08-30 18:21         ` Jan Kratochvil
2012-08-30 18:58           ` Khoo Yit Phang
2012-08-30 19:05             ` Jan Kratochvil
2012-08-30 19:28               ` Khoo Yit Phang
2012-08-31  1:32                 ` Khoo Yit Phang
2012-08-31  8:14                   ` Jan Kratochvil [this message]
2012-08-31 15:30                     ` Khoo Yit Phang
2012-08-31 15:41                       ` Andreas Schwab
2012-08-31 16:08                         ` Khoo Yit Phang
2012-08-31 17:02                           ` Andreas Schwab
2012-08-31 18:03                             ` Khoo Yit Phang
2012-08-31 18:23                           ` Jan Kratochvil
2012-08-31 18:41                             ` Khoo Yit Phang
2012-09-02 15:37                               ` Jan Kratochvil
2012-09-06 19:31                                 ` Khoo Yit Phang
2012-08-30 18:22         ` Sergio Durigan Junior
2012-08-30 18:45           ` Khoo Yit Phang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120831081353.GA23421@host2.jankratochvil.net \
    --to=jan.kratochvil@redhat.com \
    --cc=dmalcolm@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=khooyp@cs.umd.edu \
    --cc=teawater@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox