2012-01-12 54 views
0

我正在閱讀「The Apache Modules Book」一書來學習編寫Apache2模塊。 我嘗試了一些書中的例子,並且在一個案例中,我得到了分段錯誤,即使我完全複製了&從作者的網站粘貼源文件。Apache2模塊中的分段錯誤

該示例是一個輸出過濾器,用於處理* .txt文件的請求,並在其間添加一個html頁眉和頁腳以及所請求的txt文件的html轉義內容。

的源代碼可在:http://apache.webthing.com/mod_txt/

Apache的日誌文件中的錯誤是:

[星期四1月12日20時38分01秒2012] [聲明]兒童PID 3500退出信號

: 分割故障(11)

我使用下列命令安裝在模塊

使用apxs2時沒有編譯錯誤。

我加了過濾器在httpd.conf文件如下:

LoadModule txt_module /usr/lib/apache2/modules/mod_txt.so 
AddOutputFilter text-filter .txt 
AddType text/html .txt 
TextHeader /home/robert/header.txt 
TextFooter /home/robert/footer.txt 

這有什麼錯的代碼或我在做與comiling /安裝一些錯誤/配置過濾器?

我的系統:Ubuntu Lucid Lynx 10.04.3,Apache 2.2.14從默認的Ubuntu存儲庫安裝。

我真的很感激任何提示!

在此先感謝!

最好的問候, 羅伯特

[編輯] 一些額外的信息:

我用gdb就要上段錯誤發生,其中一些更多的信息。 有什麼辦法可以得到確切的行號?

這是輸出:

Program received signal SIGSEGV, Segmentation fault. 
[Switching to Thread 0xab472b70 (LWP 4041)] 
0xb7d3fb9b in txt_filter() from /usr/lib/apache2/modules/mod_txt.so 
(gdb) bt 
#0 0xb7d3fb9b in txt_filter() from /usr/lib/apache2/modules/mod_txt.so 
#1 0x00154150 in ap_pass_brigade (next=0x2e3198, bb=0xb7f4fff4) 
    at /build/buildd/apache2-2.2.14/server/util_filter.c:526 
#2 0x00141147 in default_handler (r=0x2e4ea8) 
    at /build/buildd/apache2-2.2.14/server/core.c:3757 
#3 0x00148321 in ap_run_handler (r=0x2e4ea8) 
    at /build/buildd/apache2-2.2.14/server/config.c:159 
#4 0x0014c107 in ap_invoke_handler (r=0x2e4ea8) 
    at /build/buildd/apache2-2.2.14/server/config.c:373 
#5 0x0015b6b8 in ap_process_request (r=0x2e4ea8) 
    at /build/buildd/apache2-2.2.14/modules/http/http_request.c:282 
#6 0x001581e8 in ap_process_http_connection (c=0x2defd0) 
    at /build/buildd/apache2-2.2.14/modules/http/http_core.c:190 
#7 0x00150b91 in ap_run_process_connection (c=0x2defd0) 
    at /build/buildd/apache2-2.2.14/server/connection.c:43 
#8 0x0016249b in process_socket (thd=0x2a7958, dummy=0x2dda00) 
    at /build/buildd/apache2-2.2.14/server/mpm/worker/worker.c:544 
#9 worker_thread (thd=0x2a7958, dummy=0x2dda00) 
    at /build/buildd/apache2-2.2.14/server/mpm/worker/worker.c:894 
#10 0xb7f781e1 in ??() from /usr/lib/libapr-1.so.0 
#11 0xb7f3f96e in start_thread() from /lib/tls/i686/cmov/libpthread.so.0 
#12 0xb7eada4e in clone() from /lib/tls/i686/cmov/libc.so.6 
+1

爲什麼不嘗試使用apxs2 -c進行編譯-Wc,-g3 mod_txt.c從seg故障轉儲文件中獲取更多信息。 – Boris 2012-03-17 18:14:04

回答

1

更專業的調試教程Apache模塊可以在你讀的書(第12章)中找到。

目前,我在Ubuntu Lucid Lynx上運行相同的硬件/軟件配置(apache 2.2.14)併成功編譯/運行模塊。

在文件夾/ var/www /我已經放了一個HTML文檔,但只改變它的擴展名爲.txt,並通過我的瀏覽器(localhost/some-html.txt)和輸出(取決於標籤你已經放入了頁眉和頁腳文件)被成功地表現出來(因爲我已經分別在我的頁眉和頁腳文件中使用了<pre></pre>標籤)。