Thanks a lot Ken!
Indeed, our mod_perl was compiled by solaris cc, but Inline was compiled by gcc.
I have tried to rebuild Inline and install a new server with mod_perl and
Inline compiled by the same solaris cc. Now all of program should use solaris
cc to compile into the bin file. But, unfortunately, it didn't work either....
:(( ....
I am sure someone met and resolved it before because Apache+ mod_perl + Inline
should be a normal working environment.
Help, All ! The deadline of our project is coming soon!
Ken Williams <[EMAIL PROTECTED]> wrote:
Hi Jun,
I have a feeling that your mod_perl may have been compiled differently
than your original perl. This is often the source of failures with
C-based modules under mod_perl. By some combination of re-compiling
mod_perl and/or Inline, you may be able to get this working.
Also, the example in the cookbook wasn't targeting mod_perl 2, it was
for mod_perl 1, so maybe that's part of the problem too.
-Ken
On Feb 23, 2005, at 3:51 AM, Jun Ming wrote:
> Thanks for your advice.
>
> I found this function in perldoc Inline::C-Cookbook.
>
> Problem
> How do I use Inline with mod_perl?
> Solution
> package Factorial;
> use strict;
> use Inline Config =>
> DIRECTORY => '/usr/local/apache/Inline',
> ENABLE => 'UNTAINT';
> use Inline 'C';
> Inline->init;
> sub handler {
> my $r = shift;
> $r->send_http_header('text/plain');
> printf "%3d! = %10d\n", $_, factorial($_) for 1..100;
> return Apache::Constants::OK;
> }
> 1;
> __DATA__
> __C__
> double factorial(double x) {
> if (x < 2) return 1;
> return x * factorial(x - 1)
> }
> Discussion
> This is a fully functional mod_perl handler that prints
> out the factorial values for the numbers 1 to 100. Since
> we are using Inline under mod_perl, there are a few
> considerations to , um, consider.
> First, mod_perl handlers are usually run with "-T" taint
> detection. Therefore, we need to enable the UNTAINT
> option. The next thing to deal with is the fact that
> this handler will most likely be loaded after Perl's
> compile time. Since we are using the DATA section, we
> need to use the special "init()" call. And of course we
> need to specify a DIRECTORY that mod_perl can compile
> into. See the above CGI example for more info.
>
> perl v5.8.5 Last change: 2002-10-21 9
>
>
>
> User Contributed Perl Documentation C-COOKBOOK(1)
>
> Other than that, this is a pretty straightforward
> mod_perl handler, tuned for even more speed!
> See Also
> See Stas Bekman's upcoming O'Reilly book on mod_perl to
> which this example was contributed.
> Credits
> Object Oriented Inline
>
>
> I have commented that line, but it doesn't work still.
>
> Peter Sinnott
wrote:
> On Wed, Feb 23, 2005 at 04:22:02PM +0800, Jun Ming wrote:
>> Hi all,
>> We are using Inline-0.44 as a perl module in Apache 2.0.52 with
>> mod_perl/1.999.20 in Solaris 2.8. There is some error in Apache's
>> error_log, please see the details as reference.
>>
>> If we use Inline as Example 1, even without any real C program,
>> Apache server always reports the previous handler "exits signal
>> Segmentation fault" and restarts the whole handler. This error
>> happens every time except for the first time when Apache server
>> restarts. And It doesn't happen either if no more http request to it.
>>
>> However, just as example 2, if we comment the contents only regarding
>> Inline, everything seems in order - Apache doesn't report any error
>> and the process ID keeps as the previous one.
>>
>> Any advice for us? Thanks in advance.
>
> Try dropping the call to Inline->init(). I dont recall seeing it called
> directly before,doesn't seem to cause any problems for me from the cmd
> line but I have a vague recollections of apache not liking reading from
> the data section of perl scripts and this is the context the inline
> man pages refer to init in so it could be part of the problem.
>
> --
> We exist to competently provide access to corporate leadership skills
> in
> order to assertively disseminate cutting edge information to stay
> competitive
> in tomorrow's world
>
>
>
> ---------------------------------
> Do You Yahoo!?
> 150万曲MP3疯狂搜,带您闯入音乐殿堂
> 美女明星应有尽有,搜遍美图、艳图和酷图
> 1G就是1000兆,雅虎电邮自助扩容!
---------------------------------
Do You Yahoo!?
150万曲MP3疯狂搜,带您闯入音乐殿堂
美女明星应有尽有,搜遍美图、艳图和酷图
1G就是1000兆,雅虎电邮自助扩容!