Commit b582c42c authored by Niko Tyni's avatar Niko Tyni
Browse files

Patch away debugperl stack extension checks

Closes: #902779
parents 37d412f6 004b7299
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
# see git-dpm(1) from git-dpm package
0bc0d1fd494b909825256f169acdddd3551622db
0bc0d1fd494b909825256f169acdddd3551622db
004b7299d16b24e8dbd24dc92eec048484aed8cf
004b7299d16b24e8dbd24dc92eec048484aed8cf
61a74e188b2c62ee2df321fd190ae5375dfadc42
61a74e188b2c62ee2df321fd190ae5375dfadc42
perl_5.28.0.orig.tar.xz
+64 −0
Original line number Diff line number Diff line
From 004b7299d16b24e8dbd24dc92eec048484aed8cf Mon Sep 17 00:00:00 2001
From: Niko Tyni <ntyni@debian.org>
Date: Mon, 16 Jul 2018 10:12:37 +0300
Subject: Disable debugperl stack extension checks for binary compatibility
 with perl

When an XS module is built without -DDEBUGGING but the interpreter is,
the debugging stack high-water mark checking on the interpreter side
doesn't work properly. This makes /usr/bin/debugperl less useful than
it could be as it can no longer use many XS module packages.

Patch the check away for now. We hope upstream will provide a Configure
option for this in the future.

Bug: https://rt.perl.org/Ticket/Display.html?id=133327
Bug-Debian: https://bugs.debian.org/902779
Patch-Name: debian/disable-stack-check.diff
---
 dump.c   | 3 +++
 pp_hot.c | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/dump.c b/dump.c
index 227eb996e..4e1c594ce 100644
--- a/dump.c
+++ b/dump.c
@@ -2500,6 +2500,8 @@ Perl_runops_debug(pTHX)
         ++PL_op_exec_cnt[PL_op->op_type];
 #endif
 #if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
+/* disabled on Debian due to https://bugs.debian.org/902779 */
+#ifndef DEBIAN
         if (PL_curstackinfo->si_stack_hwm < PL_stack_sp - PL_stack_base)
             Perl_croak_nocontext(
                 "panic: previous op failed to extend arg stack: "
@@ -2507,6 +2509,7 @@ Perl_runops_debug(pTHX)
                     PL_stack_base, PL_stack_sp,
                     PL_stack_base + PL_curstackinfo->si_stack_hwm);
         PL_curstackinfo->si_stack_hwm = PL_stack_sp - PL_stack_base;
+#endif
 #endif
 	if (PL_debug) {
             ENTER;
diff --git a/pp_hot.c b/pp_hot.c
index 56e3cbe6e..f4e1ae726 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -5232,6 +5232,8 @@ PP(pp_entersub)
 	CvXSUB(cv)(aTHX_ cv);
 
 #if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
+/* disabled on Debian due to https://bugs.debian.org/902779 */
+#ifndef DEBIAN
         /* This duplicates the check done in runops_debug(), but provides more
          * information in the common case of the fault being with an XSUB.
          *
@@ -5245,6 +5247,7 @@ PP(pp_entersub)
                     HvNAME(GvSTASH(CvGV(cv))), GvNAME(CvGV(cv)), CvFILE(cv),
                     PL_stack_base, PL_stack_sp,
                     PL_stack_base + PL_curstackinfo->si_stack_hwm);
+#endif
 #endif
 	/* Enforce some sanity in scalar context. */
 	if (is_scalar) {
+1 −0
Original line number Diff line number Diff line
@@ -40,3 +40,4 @@ debian/prune_libs.diff
debian/mod_paths.diff
debian/configure-regen.diff
debian/deprecate-with-apt.diff
debian/disable-stack-check.diff
+3 −0
Original line number Diff line number Diff line
@@ -2500,6 +2500,8 @@ Perl_runops_debug(pTHX)
        ++PL_op_exec_cnt[PL_op->op_type];
#endif
#if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
/* disabled on Debian due to https://bugs.debian.org/902779 */
#ifndef DEBIAN
        if (PL_curstackinfo->si_stack_hwm < PL_stack_sp - PL_stack_base)
            Perl_croak_nocontext(
                "panic: previous op failed to extend arg stack: "
@@ -2507,6 +2509,7 @@ Perl_runops_debug(pTHX)
                    PL_stack_base, PL_stack_sp,
                    PL_stack_base + PL_curstackinfo->si_stack_hwm);
        PL_curstackinfo->si_stack_hwm = PL_stack_sp - PL_stack_base;
#endif
#endif
	if (PL_debug) {
            ENTER;
+3 −0
Original line number Diff line number Diff line
@@ -5232,6 +5232,8 @@ PP(pp_entersub)
	CvXSUB(cv)(aTHX_ cv);

#if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
/* disabled on Debian due to https://bugs.debian.org/902779 */
#ifndef DEBIAN
        /* This duplicates the check done in runops_debug(), but provides more
         * information in the common case of the fault being with an XSUB.
         *
@@ -5245,6 +5247,7 @@ PP(pp_entersub)
                    HvNAME(GvSTASH(CvGV(cv))), GvNAME(CvGV(cv)), CvFILE(cv),
                    PL_stack_base, PL_stack_sp,
                    PL_stack_base + PL_curstackinfo->si_stack_hwm);
#endif
#endif
	/* Enforce some sanity in scalar context. */
	if (is_scalar) {