RE: mod_perl always segfault on thread creation

Doug Hunt <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
Hi Rommel:  Are you building statically or dynamically?  I had a problem 
with segfaulting mod_perl, the solution for which eluded me for a long 
time.  I had been doing a static apache/mod_perl build on CentOS 6.3 
(similar to RedHat Enterprise 6.3).

I finally cured the problem by just doing a dynamic build instead.  From 
what I can tell, static builds in my environment (x86_64, CentOS 6.3, perl 
5.16.1) are pretty well broken.  The dynamic build went just fine.

Just a thought...

--Doug Hunt

[email protected]
Software Engineer
UCAR - COSMIC, Tel. (303) 497-2611

On Wed, 22 Aug 2012, hack bear wrote:

> Thanks but the trick doesn't seem to help.
> 
> First the instruction seems wrong. With it, the resulting perl executable does not even have useithreads defined.
> 
> Then I try
> 
> CFLAGS='-m64 -mtune=nocona' ./Configure -Dinstallusrbinperl -Dusethreads -Duseithreads -Dprefix=/usr -des -A ccflags="-fPIC
> -m64 -mtune=nocona "
> 
> Now I get a perl with useithread and -mtune=nocona (versus -mtune=generic)
> 
> # perl -V
> Summary of my perl5 (revision 5 version 16 subversion 1) configuration:
>   
>   Platform:
>     osname=linux, osvers=2.6.32-131.12.1.el6.x86_64, archname=x86_64-linux-thread-multi
>     uname='linux alcatraz6 2.6.32-131.12.1.el6.x86_64 #1 smp wed sep 21 08:12:51 pdt 2011 x86_64 x86_64 x86_64 gnulinux '
>     config_args='-Dinstallusrbinperl -Dusethreads -Duseithreads -Dprefix=/usr -des -A ccflags=-fPIC -m64 -mtune=nocona '
>     hint=previous, useposix=true, d_sigaction=define
>     useithreads=define, usemultiplicity=define
>     useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
>     use64bitint=define, use64bitall=define, uselongdouble=undef
>     usemymalloc=n, bincompat5005=undef
>   Compiler:
>     cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include
> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC -m64 -mtune=nocona',
> 
> Then I install the perl build, build mod_perl and install. Verify I'm using the new versions in apache. But still the script
> produces segfault consistently.
> 
> Did people ever get threads to work in mod_perl/apache/redhat enterprise linux 6? May someone send the "perl -V" output. This
> basic feature should work out of box on any environment.
> 
> 
> _______________________________________________________________________________________________________________________________
> From: [email protected]
> To: [email protected]; [email protected]
> Subject: RE: mod_perl always segfault on thread creation
> Date: Tue, 21 Aug 2012 06:41:09 +0000
> 
> Hi,
> 
>  
> 
> You could try some options for configuring Perl given here:
> 
> http://perl.apache.org/docs/2.0/user/install/install.pod.orig
> 
>  
> 
> specially:
> 
> % CFLAGS='-m64 -mtune=nocona' ./Configure -des -A ccflags=-fPIC
> 
>  
> 
> Before doing a make.
> 
>  
> 
> Thanks,
> 
> Rommel.
> 
>  
> 
>  
> 
> From: hack bear [mailto:[email protected]]
> Sent: Tuesday, August 21, 2012 2:06 AM
> To: [email protected]
> Subject: mod_perl always segfault on thread creation
> 
>  
> 
> hi,
> 
> This is totally frustrating. My mod_perl script always causes segmentation fault when it tries to create a thread. I searched
> the Web and this forum, but there is still no definitive answers. My perl and mod_perl are of pretty recent versions and I
> check for the inclusion of useithreads config. I wrote a simple script to prove it:
> 
> use CGI;
> use threads;
> use Config;
> use mod_perl;
> 
> our $LOGGER;
> BEGIN {
>     $LOGGER = Apache2::ServerUtil->server->log;
>     $LOGGER->error("testhread starting (CGI version ".CGI->version.")");
> }
> 
> my $q       = CGI->new;
> my $check = defined $Config{useithreads};
> $LOGGER->error("useithread? $check");
> my $v = mod_perl->VERSION;
> $LOGGER->error("version $v");
> 
>     my $thr = threads->create(sub { }); # comment out these two lines will work
>     $thr->join(); # already crashed at the line above
> 
> $q->header(-status => '200 OK');
> 
> It produces logs
> 
> Aug 20 13:07:50 (4216) [error] testhread starting (CGI version 3.51)
> Aug 20 13:07:50 (4216) [error] useithread? 1
> Aug 20 13:07:50 (4216) [error] version 2.000004
> Aug 20 13:07:51 (4159) [notice] child pid 4216 exit signal Segmentation fault (11)
> 
> Any way I can solve this?
> 
> Thanks!
> 
> (Perl -V)
> Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
>   
>   Platform:
>     osname=linux, osvers=2.6.18-274.3.1.el5, archname=x86_64-linux-thread-multi
>     uname='linux hs20-bc2-5.build.redhat.com 2.6.18-274.3.1.el5 #1 smp fri aug 26 18:49:02 edt 2011 x86_64 x86_64 x86_64
> gnulinux '
>     config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
> --param=ssp-buffer-size=4 -m64 -mtune=generic -DDEBUGGING=-g -Dversion=5.10.1 -Dmyhostname=localhost -Dperladmin=root@localhost
> -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl5
> -Dsitearch=/usr/local/lib64/perl5 -Dprivlib=/usr/share/perl5 -Darchlib=/usr/lib64/perl5
> -Dvendorlib=/usr/share/perl5/vendor_perl -Dvendorarch=/usr/lib64/perl5/vendor_perl -Dinc_version_list=5.10.0
> -Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Duseshrplib -Dusethreads -Duseithreads
> -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio
> -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto
> -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto
> -Dscriptdir=/usr/bin'
>     hint=recommended, useposix=true, d_sigaction=define
>     useithreads=define, usemultiplicity=define
>     useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
>     use64bitint=define, use64bitall=define, uselongdouble=undef
>     usemymalloc=n, bincompat5005=undef
>   Compiler:
>     cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include
> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
>     optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64
> -mtune=generic',
>     cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
>     ccversion='', gccversion='4.4.5 20110214 (Red Hat 4.4.5-6)', gccosandvers=''
>     intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
>     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
>     ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
>     alignbytes=8, prototype=define
>   Linker and Libraries:
>     ld='gcc', ldflags =' -fstack-protector'
>     libpth=/usr/local/lib64 /lib64 /usr/lib64
>     libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
>     perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
>     libc=, so=so, useshrplib=true, libperl=libperl.so
>     gnulibc_version='2.12'
>   Dynamic Linking:
>     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib64/perl5/CORE'
>     cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
> --param=ssp-buffer-size=4 -m64 -mtune=generic'
> Characteristics of this binary (from libperl):
>   Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
>                         PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_64_BIT_ALL
>                         USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
>                         USE_PERLIO USE_REENTRANT_API
>   Built under linux
>   Compiled at Oct  4 2011 10:53:24
>   @INC:
>     /usr/local/lib64/perl5
>     /usr/local/share/perl5
>     /usr/lib64/perl5/vendor_perl
>     /usr/share/perl5/vendor_perl
>     /usr/lib64/perl5
>     /usr/share/perl5
> 
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.