pthread_create后没有detach导致内存耗光BUG排查

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

现象:长时间跑某个测试用例,一段时间后程序停止,抓取logcat报:

pthread_create failed: couldn't mprotect PROT_NONE 4096-byte stack guard region: Out of memory

原因:经排查,发现c++层中某个函数会不断的调用pthread_create()创建线程,但线程运行完却没有detach释放相关资源,导致系统内存被耗光

解决办法:

  有两种解决办法:

1.在线程执行结束后调用pthread_detach释放资源

 pthread_detach(pthread_self());

 

 2.创建线程前设置 PTHREAD_CREATE_DETACHED 属性

 pthread_attr_t attr;

 pthread_t thread;

 pthread_attr_init (&attr);

 pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);

 pthread_create (&thread, &attr, &thread_function, NULL);

 pthread_attr_destroy (&attr);

转载于:https://my.oschina.net/u/3750358/blog/3019207

你可能感兴趣的:(pthread_create后没有detach导致内存耗光BUG排查)