我打電話用如下的功能:段錯誤的g_slice_alloc
void call_system_command(const char *command_params)
{
GString *cmd = g_string_sized_new(1024);
g_string_append_printf(cmd, "/bin/bash /path/to/my/script '%s'", command_params);
system(cmd->str);
g_string_free(cmd, TRUE);
}
我與g_string_sized_new線得到段錯誤。從GDB 回溯顯示:
(gdb) bt
#0 0x000000320ce56264 in g_slice_alloc() from /lib64/libglib-2.0.so.0
#1 0x000000320ce5c3db in g_string_sized_new() from /lib64/libglib-2.0.so.0
....
我已經試過出口G_SLICE =永遠的malloc,以便不用油腔滑調自己分配,使用的malloc。但問題仍然存在。 我仍然在g_slice_alloc中發生段錯誤。 另外我從多個線程調用這個函數'call_system_command'。 這可能是一個問題嗎?
該函數是每15分鐘由cron調用的插件的一部分。段落錯誤不會在每次執行插件時發生,而是每3-4天發生一次。
任何關於進一步調試的指針都會有幫助。
在此先感謝。
請給我們展示一個最小的,可編譯的測試用例。 「最小」意味着「僅使用重現此問題所需的基本要素」,「可編譯」意味着「能夠在我們的系統上進行編譯和調試,而無需填寫空白或修復基本的語法錯誤」。 – Sebivor 2013-02-25 09:51:19