[fpc-pascal] Apache module with fpc 2.4.x on Apache 2.2.x (64bit)

ABorka fpc-devel at aborka.com
Thu May 26 22:55:14 CEST 2011


On 5/26/2011 13:36, Takashi Ishikawa wrote:
> Hello, all
>
> I'm writing apache module with fpc.
>
> When I compile my program on fpc 2.4.4, Apache terminate immediately.
> But on fpc 2.2.4, Apache and my module will work fine.
>
> Code is compiled with no problem. Apache can load module. But the
> running has problem.
>
> Is there anyone who running a module compiled with fpc 2.4.x on Apache?
>
>
> I tested some envirment:
> - OS: CentOS 5.5 / Fedora 12
> - Apache: 2.2.3 / 2.2.17
> - Arch: x86_64
> - FPC: 2.2.4 / 2.4.2 / 2.4.4
>
>
> Test code:
> -----
> library lib_mod_simple;
>
> {$ifdef fpc}
> {$mode objfpc}{$H+}
> {$endif}
>
> uses SysUtils, httpd, apr;
>
> var
> mod_simple: module; public name 'mod_simple';
>
> exports
> mod_simple name 'mod_simple';
>
> function DefaultHandler(r: Prequest_rec): Integer; cdecl;
> begin
> Result := DECLINED;
> end;
>
> procedure RegisterHooks(p: Papr_pool_t); cdecl;
> begin
> ap_hook_handler(@DefaultHandler, nil, nil, APR_HOOK_MIDDLE);
> end;
>
> begin
> FillChar(mod_simple, SizeOf(mod_simple), 0);
> STANDARD20_MODULE_STUFF(mod_simple);
> with mod_simple do
> begin
> name := 'mod_simple.so';
> register_hooks := @RegisterHooks;
> end;
> end.
> -----
>
>
> Compilation options:
> -----
> fpc -Xs -XX -fPIC -dFPCAPACHE_2_2 -omod_simple.so mod_simple.pas
> -----
>
>
> LoadModule in httpd.conf:
> -----
> LoadModule mod_simple modules/mod_simple.so
> -----
>
>
> Test#1 with CentOS 5.5, Apache 2.2.3, FPC 2.2.4
> -----
> # gdb httpd
> (gdb) r -X
>
> Starting program: /usr/sbin/httpd -X
> [Thread debugging using libthread_db enabled]
> Detaching after fork from child process 28066.
> Detaching after fork from child process 28080.
>
> -----
>
>
> Test#2 with CentOS 5.5, Apache 2.2.3, FPC 2.4.4
> -----
> # gdb httpd
> (gdb) r -X
>
> Starting program: /usr/sbin/httpd -X
> [Thread debugging using libthread_db enabled]
> Detaching after fork from child process 28119.
>
> Program exited normally.
>
> (gdb)
> -----
>
> Test with CentOS 5.5, Apache 2.2.3, FPC 2.4.2
> Test with CentOS 5.5, Apache 2.2.3, FPC 2.4.4
> Test with Fedora 12, Apache 2.2.17, FPC 2.4.4
> same as Test#2
>
>
> In test#1, it seemed to be success. When I access the webserver with
> browser, apache respond normal page.
>
> In test#2, apache shows no error. But process terminate. And when I
> accessed the webserver, apache didn't respond.
>
>
> It is possible to develop by using FPC 2.2.4. However, the future, I
> want to compile with a newer version of FPC. Is there any idea to
> running module with FPC 2.4.x?
>
> Thanks,
> Takashi

There were problems with apache modules that were fixed in the latest 
FPC SVN (bug report 19184).
If you do not want to use the SVN versions of FPC/Lazarus, you can just 
download the latest packages/fcl-web/src/base/  files from SVN into your 
project directory and recompile your project.

Also, make sure you compile with the httpd22 directory and that 
FPC/Lazarus is not accidentally uses httpd13 or httpd20 . The best if 
you just delete these two directories from your fpc units directory.

AB




More information about the fpc-pascal mailing list