Apache2模块中的分段故障

Apache2模块中的分段故障,c,apache2,apache2-module,C,Apache2,Apache2 Module,我目前正在阅读《Apache模块手册》,学习编写Apache2模块。 我尝试了书中的一些例子,有一次我遇到了一个分割错误,即使我完全复制并粘贴了作者网站上的源文件 该示例是一个输出过滤器,用于处理*.txt文件的请求,在请求的txt文件的html转义内容之间添加html页眉和页脚 源代码可在以下位置获得: apache日志文件中的错误如下: [Thu Jan 12 20:38:01 2012][通知]儿童pid 3500退出信号 分段故障(11) 我使用以下命令安装了模块: apxs2 -c m

我目前正在阅读《Apache模块手册》,学习编写Apache2模块。 我尝试了书中的一些例子,有一次我遇到了一个分割错误,即使我完全复制并粘贴了作者网站上的源文件

该示例是一个输出过滤器,用于处理*.txt文件的请求,在请求的txt文件的html转义内容之间添加html页眉和页脚

源代码可在以下位置获得:

apache日志文件中的错误如下:

[Thu Jan 12 20:38:01 2012][通知]儿童pid 3500退出信号 分段故障(11)

我使用以下命令安装了模块:

apxs2 -c mod_txt.c 
sudo apxs2 -i mod_txt.la 
sudo service apache2 restart
使用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
代码是否有问题,或者我是否在编写/安装/配置过滤器时出错

我的系统:Ubuntu Lucid Lynx 10.04.3,Apache 2.2.14安装在默认的Ubuntu存储库中

我真的很感激任何关于这方面的暗示

提前谢谢

致以最良好的祝愿, 罗伯特

[编辑] 一些补充资料:

我使用gdb来获取更多关于SEGFULT发生在哪里的信息。 有没有办法让我知道确切的线路号

这是输出:

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

在您正在阅读的书(第12章)中可以找到更专门的apache模块调试教程

目前,我正在Ubuntu Lucid Lynx上运行相同的硬件/软件配置(apache 2.2.14),并成功编译/运行了该模块


在/var/www/I文件夹中,我放置了一个HTML文档,但只将其扩展名更改为.txt,并通过我的浏览器(localhost/some HTML.txt)访问它,输出(取决于您在页眉和页脚文件中放置的标记)成功表示(作为预成型文本,因为我在页眉和页脚文件中分别使用了
标记。)

为什么不尝试使用apxs2-c-Wc,-g3 mod_txt.c进行编译,从seg故障转储文件中获取更多信息。