From modperl-return-63016-apmail-perl-modperl-archive=perl.apache.org@perl.apache.org Mon Nov 12 12:19:02 2012 Return-Path: X-Original-To: apmail-perl-modperl-archive@www.apache.org Delivered-To: apmail-perl-modperl-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E7419DEF7 for ; Mon, 12 Nov 2012 12:19:01 +0000 (UTC) Received: (qmail 86792 invoked by uid 500); 12 Nov 2012 12:19:00 -0000 Delivered-To: apmail-perl-modperl-archive@perl.apache.org Received: (qmail 86672 invoked by uid 500); 12 Nov 2012 12:19:00 -0000 Mailing-List: contact modperl-help@perl.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list modperl@perl.apache.org Received: (qmail 86631 invoked by uid 99); 12 Nov 2012 12:18:58 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Nov 2012 12:18:58 +0000 X-ASF-Spam-Status: No, hits=2.2 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of SRS0=z9TC=JI=bowers.com=neil@srs.kundenserver.de designates 212.227.17.10 as permitted sender) Received: from [212.227.17.10] (HELO moutng.kundenserver.de) (212.227.17.10) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 12 Nov 2012 12:18:48 +0000 Received: from [192.168.0.13] (cpc9-rdng20-2-0-cust198.15-3.cable.virginmedia.com [86.2.0.199]) by mrelayeu.kundenserver.de (node=mreu4) with ESMTP (Nemesis) id 0LwjiG-1TDr7U0KF6-016ULK; Mon, 12 Nov 2012 13:18:28 +0100 From: Neil Bowers Content-Type: multipart/alternative; boundary="Apple-Mail=_F83B2122-E1C6-4BE8-BEFC-5A253CFDB473" Subject: Problem with 2.0.7: Symbol not found: _modperl_handler_name and workaround Message-Id: <84B202A8-CAAE-4DCC-9AD7-BA55045CE23E@bowers.com> Date: Mon, 12 Nov 2012 12:18:27 +0000 To: modperl@perl.apache.org Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\)) X-Mailer: Apple Mail (2.1499) X-Provags-ID: V02:K0:U2DX8/3ADV24Fmm4tEQUPWJDwA614AphKYPMxON1Z5a K/ErxRo6ToCjASUF78K7VvbL3DqUvtyu4U7HCbzxY1gNjmboA5 tFkyjFWjCTaz57TWFB2fPyX/b974s59mBei8aCrPObCuZG3J2Z vXLJlxKWidOWCQ4RL8uCdojdkxmhhfWtVwcnsksOFk/43T3C7i n9oUNfjba2r5Fy7AFtKEGPvX69eYyE0cdWC//3AfxLj8CPZ0ff C4InxJ84esYLDPhva7DJIvGGabSpZ77r4GKUFbUnKO6ciiz1K9 JgFHRbVqR+Xz0tqvYdUpBk8bKfLPaAMt13ZzK9q4RKGYBnVvJ9 2qAOpRbD7ljqp3CQK2wti8RZkkP4/4gA7OHSqBfJl X-Virus-Checked: Checked by ClamAV on apache.org --Apple-Mail=_F83B2122-E1C6-4BE8-BEFC-5A253CFDB473 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Hi, I tried rebuilding mod_perl 2.0.7 after upgrading various things, and = got the following error message when trying to start Apache: httpd: Syntax error on line 60 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/mod_perl.so into server: dlopen(/usr/local/apache/modules/mod_perl.so, 10): Symbol not found: _modperl_handler_name Referenced from: /usr/local/apache/modules/mod_perl.so Expected in: dynamic lookup After some spelunking I found a fix: make sure the MP_INLINE isn't = defined as __inline__ #define MP_INLINE but not really the root cause. First, my environment: MacOSX 10.8.2 Xcode 4.5.2 with command-line tools (I suspect the culprit may be here, = but I don't really know what I'm talking about) Apache 2.2.23 Perl 5.16.2 mod_perl 2.0.7 apr 1.4.6 I had previously built mod_perl 2.0.7 with perl 5.16.1, Apache 2.2.22 on = MacOSX 10.7.5 (and previous version of Xcode), without seeing this = problem. Here are my notes. Given the moan about not finding modperl_handler_name, I look in = mod_perl.so: % nm mod_perl.so | grep --context=3D2 modperl_handler_name 00000000000053b0 T _modperl_handler_lookup_handlers 0000000000005190 T _modperl_handler_make_args U _modperl_handler_name 0000000000004eb0 T _modperl_handler_new 00000000000056c0 T _modperl_handler_new_from_sv Indeed, not defined. So I go and look at modperl_handler.c MP_INLINE const char *modperl_handler_name(modperl_handler_t *handler) { ... } So, wonder what MP_INLINE is defined as, and in modperl_common_util.h I = find: #ifdef MP_DEBUG #define MP_INLINE #else #define MP_INLINE APR_INLINE #endif Running the pre-processor stage only, I see the definition ends up as: __inline__ const char *modperl_handler_name(modperl_handler_t *handler) So I just forced MP_INLINE to be defined blank, which made everything = work cleanly. Can anyone tell me what the real problem and fix are? Cheers, Neil --Apple-Mail=_F83B2122-E1C6-4BE8-BEFC-5A253CFDB473 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii
httpd: Syntax error on line 60 of = /usr/local/apache/conf/httpd.conf:
    Cannot load = /usr/local/apache/modules/mod_perl.so into = server:
    = dlopen(/usr/local/apache/modules/mod_perl.so, = 10):
    = Symbol not found: = _modperl_handler_name
    Referenced from: = /usr/local/apache/modules/mod_perl.so
    Expected in: dynamic = lookup

After some = spelunking I found a fix: make sure the MP_INLINE isn't defined as __inline__

#define = MP_INLINE

but not really = the root cause.

First, my = environment:

MacOSX 10.8.2
Xcode = 4.5.2 with command-line tools (I suspect the culprit may be here, but I = don't really know what I'm talking about)
Apache = 2.2.23
Perl 5.16.2
mod_perl 2.0.7
apr = 1.4.6

I had previously built = mod_perl 2.0.7 with perl 5.16.1, Apache 2.2.22 on MacOSX 10.7.5 (and = previous version of Xcode), without seeing this = problem.

Here are my = notes.

Given the moan about not finding = modperl_handler_name, I look in = mod_perl.so:

  =   % nm mod_perl.so | grep --context=3D2 = modperl_handler_name
  =   00000000000053b0 T = _modperl_handler_lookup_handlers
    0000000000005190 T = _modperl_handler_make_args
  =                    U = _modperl_handler_name
  =   0000000000004eb0 T _modperl_handler_new
    00000000000056c0 T = _modperl_handler_new_from_sv

Indeed,= not defined. So I go and look at = modperl_handler.c

    MP_INLINE
    const char = *modperl_handler_name(modperl_handler_t *handler)
    {
        ...
    = }

So, wonder what MP_INLINE = is defined as, and in modperl_common_util.h I = find:

    = #ifdef MP_DEBUG
    = #define MP_INLINE
    = #else
    #define = MP_INLINE APR_INLINE
  =   #endif

Running the = pre-processor stage only, I see the definition ends up = as:

    = __inline__
    const = char *modperl_handler_name(modperl_handler_t = *handler)

So I just forced = MP_INLINE to be defined blank, which made everything work = cleanly.

Can anyone tell me what the real = problem and fix = are?

Cheers,
Neil

<= /body>= --Apple-Mail=_F83B2122-E1C6-4BE8-BEFC-5A253CFDB473--