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兆,雅虎电邮自助扩容!

Reply via email to