我第一次跑,它没关系,第二次被破解,打印堆栈被粉碎检测到
int update_scheduler(MYSQL* website_link)
{
if (mysql_query(website_link, UPDATE_SCHEDULER_SQL))
{
printf("Query Failed:%s", mysql_error(website_link));
return -1;
}
MYSQL_RES* result;
MYSQL_ROW row;
result = mysql_store_result(website_link);
while ((row = mysql_fetch_row(result)))
{
int task_type = atoi(row[1]), task_id = atoi(row[0]);
switch (task_type)
{
case 5:
create_task_thread(batch_send_email, task_id);
break;
case 10:
batch_send_sms(task_id);
break;
case 15:
batch_member_pay(task_id);
break;
}
}
mysql_free_result(result);
return 0;
}
int create_task_thread(void* (*task)(void*), int id)
{
pthread_t pid;
int rc;
rc = pthread_create(&pid, NULL, task, (void*)id);
if (rc)
{
write_log_pid(pid);
return -1;
}
}
答案 0 :(得分:0)
最后,我发现线程函数中的pthread_slef()是溢出的。所以gcc报告堆栈粉碎。