diff options
author | Nicholas Clark <nick@ccl4.org> | 2008-03-31 16:59:07 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2008-03-31 16:59:07 +0000 |
commit | ba880bbf8088eab97ca67ab4a9f720bd66869f94 (patch) | |
tree | 8044ca8016704d4e3b30d9bc85b514f9b445edf6 /util.c | |
parent | 9e6e929b49155a4e040be3c98aa578e5de1ec66d (diff) | |
download | perl-ba880bbf8088eab97ca67ab4a9f720bd66869f94.tar.gz |
Integrate:
[ 33239]
in unpack, () groups in scalar context were still returning a list,
resulting in garbage on the stack, which could manifest as a SEGV
(Bug 50256)
[ 33296]
Subject: [PATCH] Unused var in perlio.c (revised)
From: "Jerry D. Hedden" <jdhedden@cpan.org>
Date: Tue, 12 Feb 2008 10:00:18 -0500
Message-ID: <1ff86f510802120700q689fb457ya5939bb440626157@mail.gmail.com>
[ 33301]
Subject: [PATCH] PERL_MAGIC_uvar_elem should be 'u' in dump.c
From: "Vincent Pit" <perl@profvince.com>
Date: Wed, 13 Feb 2008 11:10:11 +0100 (CET)
Message-ID: <36116.147.210.17.175.1202897411.squirrel@147.210.17.175>
[ 33334]
Enable caching of strxfrm() results also for readonly SVs as
returned e.g. by "keys %hash". This speeds up sorting of lots
of hash keys significantly. See also:
Subject: Slowdown of "sort keys %hash" under "use locale"
From: Marcus Holland-Moritz <mhx-perl@gmx.net>
Date: Fri, 15 Feb 2008 17:00:15 +0100
Message-ID: <20080215170015.72f6160d@r2d2>
[ 33388]
Do the memory debug header fixup earlier to avoid valgrind screaming
under -Dm. Also, temporarily disable memory logging during thread
memory freeing, as otherwise we try to log using memory we already
freed.
[ 33407]
Subject: [PATCH] for -M:Foo, extended and revised
From: "Robin Barker" <Robin.Barker@npl.co.uk>
Date: Wed, 27 Feb 2008 19:19:54 -0000
Message-ID: <46A0F33545E63740BC7563DE59CA9C6D093A61@exchsvr2.npl.ad.local>
[ 33408]
Subject: Re: interrupting system() with signal depends on signal handler
From: Steffen Ullrich <coyote.frank@gmx.net>
Date: Tue, 26 Feb 2008 19:43:00 +0100
Message-ID: <47C45DB4.9060306@gmx.net>
[ 33495]
Subject: [perl #51636] segmentation fault with array ties
From: blino@mandriva.com (via RT) <perlbug-followup@perl.org>
Date: Wed, 12 Mar 2008 02:59:45 -0700
Message-ID: <rt-3.6.HEAD-25460-1205315984-377.51636-75-0@perl.org>
[ 33595]
Subject: [PATCH] do not use SVTYPEMASK to prevent cleaning of PL_fdpid and PL_strtab
From: Gerard Goossen <gerard@tty.nl>
Message-ID: <20080326130713.GL4409@ostwald>
Date: Wed, 26 Mar 2008 14:07:13 +0100
[ 33596]
Fix compiler warning about comparison of pointer types.
p4raw-link: @33596 on //depot/perl: cddfcddc190fa3c9953973822c35e3baa71181f0
p4raw-link: @33595 on //depot/perl: d17ea59705db215628334e7846dd1056ff795f97
p4raw-link: @33495 on //depot/perl: b63c7c552a2e9cf2b2c5eb492358b8567fd16179
p4raw-link: @33408 on //depot/perl: 48dbb59ed9af112b035bdcc063c1471a22ec25a2
p4raw-link: @33407 on //depot/perl: 0544e6df68c5534300178fdd73628d687be1a6b2
p4raw-link: @33388 on //depot/perl: 4fd0a9b8690ace1bad89926e6d018a6f863761c3
p4raw-link: @33334 on //depot/perl: 16ec96eb5a252a78470d4a52a2fa7fe6fa01f72e
p4raw-link: @33301 on //depot/perl: cae86ea86570588a52f7ce8a0a01b6eb824103df
p4raw-link: @33296 on //depot/perl: babfacb9bd93a47857db18ca6a2ffb50458aefb3
p4raw-link: @33239 on //depot/perl: c6f750d1077663994219dbd69f4fb02631f69b10
p4raw-id: //depot/maint-5.10/perl@33614
p4raw-integrated: from //depot/perl@33613 'copy in' t/op/pack.t
(@32072..) 'edit in' t/run/switches.t (@32956..) 'merge in'
av.c (@33452..)
p4raw-integrated: from //depot/perl@33595 'edit in' sv.c (@33579..)
p4raw-integrated: from //depot/perl@33407 'edit in' perl.c (@33388..)
p4raw-integrated: from //depot/perl@33388 'edit in' util.c (@33376..)
p4raw-integrated: from //depot/perl@33301 'merge in' dump.c (@33291..)
p4raw-integrated: from //depot/perl@33296 'merge in' perlio.c
(@33291..)
p4raw-integrated: from //depot/perl@33239 'merge in' pp_pack.c
(@32821..)
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -178,11 +178,11 @@ Perl_safesysrealloc(Malloc_t where,MEM_SIZE size) ptr = (Malloc_t)PerlMem_realloc(where,size); PERL_ALLOC_CHECK(ptr); - DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) rfree\n",PTR2UV(where),(long)PL_an++)); - DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) realloc %ld bytes\n",PTR2UV(ptr),(long)PL_an++,(long)size)); - - if (ptr != NULL) { + /* MUST do this fixup first, before doing ANYTHING else, as anything else + might allocate memory/free/move memory, and until we do the fixup, it + may well be chasing (and writing to) free memory. */ #ifdef PERL_TRACK_MEMPOOL + if (ptr != NULL) { struct perl_memory_debug_header *const header = (struct perl_memory_debug_header *)ptr; @@ -198,7 +198,17 @@ Perl_safesysrealloc(Malloc_t where,MEM_SIZE size) header->prev->next = header; ptr = (Malloc_t)((char*)ptr+sTHX); + } #endif + + /* In particular, must do that fixup above before logging anything via + *printf(), as it can reallocate memory, which can cause SEGVs. */ + + DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) rfree\n",PTR2UV(where),(long)PL_an++)); + DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) realloc %ld bytes\n",PTR2UV(ptr),(long)PL_an++,(long)size)); + + + if (ptr != NULL) { return ptr; } else if (PL_nomemok) @@ -2945,6 +2955,7 @@ Perl_wait4pid(pTHX_ Pid_t pid, int *statusp, int flags) #endif if (result < 0 && errno == EINTR) { PERL_ASYNC_CHECK(); + errno = EINTR; /* reset in case a signal handler changed $! */ } return result; } |