RE: mod_perl always segfault on thread creation

hack bear <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
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.