我有阿帕奇post_config處理這種奇怪的行爲:C 64位服務器上奇怪的行爲
int setup_module(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp,server_rec *s)
{
//1
my_config_t *config = ap_get_module_config(s->module_config, &my_module);
//2
log_me(config->logfp, apr_psprintf(ptemp, "My module version %s\n", MY_VERSION));
//3
log_me(config->logfp, "Starting the batch job");
return OK;
}
log_me是在另一個文件中聲明,並在標題中聲明的自定義功能(這是在編譯時解析) 。
在第二步,我可以看到的配置有一個有效值,但第3步失敗,一個SEGSEGV,如果我嘗試調試它,我可以看到這一點:
//第2步 GDB:打印配置 $ 1 =(my_config_t *)0x7a8098
//步驟3 GDB:打印配置 不能在地址0x38
這似乎不太可能是真正的問題。它更有可能轉移堆棧或內存使用並隱藏問題。 – 2010-02-17 16:13:06
其實如果我評論這個處理程序我沒有問題。 此模塊也可以在默認的32位(gcc,apache和LD庫路徑)的Solaris 10上完美工作。在這裏,我全部都在64 – Alin 2010-02-17 16:19:21
也許你沒有在包含'log_me'的文件中包含'string.h'? – 2010-02-18 01:07:12