aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2010-12-14 05:19:51 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-12-14 05:19:51 +0000
commit646abff51d38292367bce009d01087c404c4759b (patch)
treeed56a19f49ccc3bcdb64886c9187a3c9fa886ad7
parentcac7efc966071ab8b1dc2faef70a698c45dfc895 (diff)
downloadgcc-646abff51d38292367bce009d01087c404c4759b.zip
gcc-646abff51d38292367bce009d01087c404c4759b.tar.gz
gcc-646abff51d38292367bce009d01087c404c4759b.tar.bz2
Better error message if malloc gets a SIGSEGV.
From-SVN: r167785
-rw-r--r--libgo/runtime/go-signal.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libgo/runtime/go-signal.c b/libgo/runtime/go-signal.c
index 8f44970..3838ab9 100644
--- a/libgo/runtime/go-signal.c
+++ b/libgo/runtime/go-signal.c
@@ -133,6 +133,12 @@ sighandler (int sig)
{
sigset_t clear;
+ if (__sync_bool_compare_and_swap (&m->mallocing, 1, 1))
+ {
+ fprintf (stderr, "caught signal while mallocing: %s\n", msg);
+ __go_assert (0);
+ }
+
/* The signal handler blocked signals; unblock them. */
i = sigfillset (&clear);
__go_assert (i == 0);