From 765f7828918b0eebe70ab9b16c31a2587969fc7e Mon Sep 17 00:00:00 2001 From: Mark Salyzyn Date: Fri, 4 Apr 2014 12:47:44 -0700 Subject: [PATCH] logd: transitory reader thread create should be detached Bug: 13692914 Change-Id: Ia7306e6e844ae9f17c6f594bf6b25f3148652570 --- logd/LogTimes.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/logd/LogTimes.cpp b/logd/LogTimes.cpp index 8cb015ca3..c32ac2dce 100644 --- a/logd/LogTimes.cpp +++ b/logd/LogTimes.cpp @@ -46,14 +46,25 @@ LogTimeEntry::LogTimeEntry(LogReader &reader, SocketClient *client, { } void LogTimeEntry::startReader_Locked(void) { + pthread_attr_t attr; + threadRunning = true; - if (pthread_create(&mThread, NULL, LogTimeEntry::threadStart, this)) { - threadRunning = false; - if (mClient) { - mClient->decRef(); + + if (!pthread_attr_init(&attr)) { + if (!pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)) { + if (!pthread_create(&mThread, &attr, + LogTimeEntry::threadStart, this)) { + pthread_attr_destroy(&attr); + return; + } } - decRef_Locked(); + pthread_attr_destroy(&attr); } + threadRunning = false; + if (mClient) { + mClient->decRef(); + } + decRef_Locked(); } void LogTimeEntry::threadStop(void *obj) {