我正在使用以下几行调用一个函数:
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=always-malloc,以便使用 malloc 代替 glib 自己的分配器。但是问题仍然相同。我仍然在 g_slice_alloc 中遇到段错误。我也从多个线程调用这个函数'call_system_command'。这会是个问题吗?
该函数是 cron 每 15 分钟调用一次的插件的一部分。段错误不是每次执行插件时都会发生,而是每 3-4 天发生一次。
有关进一步调试的任何指示都会有所帮助。
提前致谢。