Delphi XEでのApacheメソッドapr_pool_create_exの適切な使用法は何ですか?
以前にApacheモジュールを作成しましたが、すべてハンドラーでした。現在、サービスプロバイダーの開発に取り組んでいます。スケルトンモジュールが作成され、child_initコールバックメソッドがApacheによって呼び出されています。child_initメソッドでap_pool_create_ex*を正常に呼び出します(APR_SUCCESSを返します)が、child_it呼び出しを終了した後、3番目または4番目のワーカースレッドの(httpd.exe)スポーン中にアクセス違反を受け取ります(3番目はイベントに表示されます)ログ)。
procedure provider_child_init(pchild: Papr_pool_t; s: Pserver_rec); cdecl;
var
rv : apr_status_t;
mypool : Papr_pool_t;
begin
rv := -1;
rv := apr_pool_create_ex(@mypool,pchild,nil,nil);
end;
AVメッセージは次のとおりです。
「プロジェクトC:\ Apache2.2 \ bin \ http.exeで連続した例外が多すぎます:'0x00000000でのアクセス違反:アドレス0x00000000の読み取り'。プロセスが停止しました。ステップまたは実行を使用して続行します」</p>
イベントログ:
…
Thread Start: Thread ID: 5652. Process httpd.exe (4212)
Thread Start: Thread ID: 5132. Process httpd.exe (4212)
Thread Start: Thread ID: 5988. Process httpd.exe (4212)
注:AVはスレッドID 5988で発生し、4212は親httpd.exeプロセスです。
- Windowsの「libapr-1.dll」には「apr_pool_create」が含まれていないため、「_ex」バージョンを使用しています。apr_pool_createが欠落している理由はありますか?'C'で記述されていますが、apr_pool_createが他の成功したモジュールで使用されているのがわかります。
OS:Windows 7Enterprise64ビット
Apache:2.2.17.0
IDE:Delphi XE