Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Jun 2009 10:50:14 +1100
From:      Dima Panov <Fluffy@fluffy.khv.ru>
To:        freebsd-ports-bugs@freebsd.org, shaun@freebsd.org
Subject:   Re: ports/135974: innd core dumps with newer versions of libperl
Message-ID:  <200906251050.17659.Fluffy@fluffy.khv.ru>
In-Reply-To: <200906231837.n5NIbC8i093066@www.freebsd.org>
References:  <200906231837.n5NIbC8i093066@www.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 24 June 2009 05:37:12 Steven Schlansker wrote:
> >Number:         135974
> >Category:       ports
> >Synopsis:       innd core dumps with newer versions of libperl
> >Confidential:   no
> >Severity:       serious
> >Priority:       high
> >Responsible:    freebsd-ports-bugs
> >State:          open
> >Quarter:
> >Keywords:
> >Date-Required:
> >Class:          sw-bug
> >Submitter-Id:   current-users
> >Arrival-Date:   Tue Jun 23 18:40:01 UTC 2009
> >Closed-Date:
> >Last-Modified:
> >Originator:     Steven Schlansker
> >Release:        7.2-RELEASE
>
> >Description:
>
> Building innd-2.4.5 and perl-5.10.0_3 from ports ends up with innd
> segmentation faulting in libperl.so whenever it tries to start.

--- lib/perl.c.orig	2008-06-30 04:56:57.000000000 +1100
+++ lib/perl.c	2009-02-11 00:49:49.000000000 +1000
@@ -110,14 +110,18 @@
     if (PerlCode == NULL) {
         /* Perl waits on standard input if not called with '-e'. */
         int argc = 3;
-        const char *argv[] = { "innd", "-e", "0", NULL };
-        char *env[]  = { NULL };
+        const char *argv_innd[] = { "innd", "-e", "0", NULL };
+        char **argv = (char **)argv_innd; /* Cast required by Perl 5.10. */
+        char **env  = { NULL };
 #ifdef PERL_SYS_INIT3
         PERL_SYS_INIT3(&argc, &argv, &env);
 #endif
         PerlCode = perl_alloc();
         perl_construct(PerlCode);
-        perl_parse(PerlCode, xs_init, argc, (char **)argv, env) ;
+#ifdef PERL_EXIT_DESTRUCT_END
+        PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
+#endif
+        perl_parse(PerlCode, xs_init, argc, argv, env) ;
     }
     
     if (startupfile != NULL && filterfile != NULL) {


-- 
Dmitry "Red Fox" Panov @ Home | KDE@FreeBSD Team | FreeBSD since September 1995
Khabarovsk, Russia     | Skype:dima.panov | Jabber.org:fluffy.khv | ICQ:1745024



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906251050.17659.Fluffy>