2016-09-16 80 views
1

我已经在apache 2.4上构建了一个共享模块。我可以得到apache构建succesfull。在Apache开始处有下面线路转储:ap_log_error转储apache启动apache 2.4

if (r != NULL)  ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r, "test"); 

我derefernce结构变量r是类型server_rec(阿帕奇结构)的并且在下面dbx中的值

(dbx) p *r 
(process = 0x000000011001fa88, next = (nil), error_fname = "logs/error_log", error_log = 0x000000011001fa10, log = (module_levels = (nil), level = 4), module_config = 0x0000000110053420, lookup_defaults = 0x0000000110054ef8, defn_name = (nil), defn_line_number = 0, is_virtual = '\0', port = 0, server_scheme = (nil), server_admin = "[email protected]", server_hostname = "isi081.wdf.sap.corp", addrs = 0x000000011004e410, timeout = 60000000, keep_alive_timeout = 5000000, keep_alive_max = 100, keep_alive = 1, names = (nil), wild_names = (nil), path = (nil), pathlen = 0, limit_req_line = 8190, limit_req_fieldsize = 8190, limit_req_fields = 100, context = (nil)) 

我做没有看到内存中的任何腐败。但仍然有一个Apache的启动转储。 如果我注释掉这一行,那么一切都按预期工作。 Apache开始,我也能够完成操作。但是我们需要这个声明才能启用日志记录。有没有其他的替代或修复相同的。

相同的代码在apache 2.4上为linux,solaris和HP等其他平台工作。 也与apache 2.2一样的代码工作。只有在Apache 2.4上观察到这个问题。

任何帮助将不胜感激。

+0

下面是转储和r是类型server_rec: – user1422750

+0

猜你应该用调试器检查核心文件。你可能想用'-g'选项重新编译Apache。 –

回答

1

我在想你没有完全编译2.4头文件,并且“ap_log_error”未被视为它在2.4中的宏。

另外,名为“r”的server_rec是超级误导。 “r”传统上是request_rec。我不能相信这实际上不是你问题的根源,也可能是间接的。