Ap_log_error转储在apache 2.4开始

ap_log_error dumps on apache start with apache 2.4

本文关键字:开始 apache 转储 log error Ap      更新时间:2023-10-16

我在apache 2.4上构建了一个共享模块。我可以让apache构建成功。在apache启动时,在下面一行有一个转储:

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

我解引用server_rec(apache struct)类型的结构变量r,下面是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 = '', port = 0, server_scheme = (nil), server_admin = "you@example.com", 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 start上仍然有一个dump。如果我注释掉这一行,那么一切都像预期的那样工作。Apache启动,我也能够完成操作。但是为了启用日志记录,我们需要这个语句。是否有其他替代或修复相同的。

同样的代码可以在apache 2.4上的其他平台上工作,如linux,solaris和HP。同样,在aix和apache 2.2上也可以使用相同的代码。

我认为你没有完全编译针对2.4头,和"ap_log_error"不被视为宏它是在2.4。

另外,server_rec命名为"r"是超级误导。"r"通常是request_rec。我真不敢相信这不是你问题的根源,也许是间接的。