From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2201) id 54A673858C60; Sun, 5 Dec 2021 15:15:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 54A673858C60 To: cygwin-apps-cvs@sourceware.org Subject: [setup - the official Cygwin setup program] branch topic/logging-race-fix, created. release_2.910-3-g217aada7 X-Git-Refname: refs/heads/topic/logging-race-fix X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 217aada741347db9b3d9cbd7ca5752e0541e67c5 Message-Id: <20211205151544.54A673858C60@sourceware.org> Date: Sun, 5 Dec 2021 15:15:44 +0000 (GMT) From: Jon TURNEY X-BeenThere: cygwin-apps-cvs@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin-apps git logs List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Dec 2021 15:15:44 -0000 at 217aada741347db9b3d9cbd7ca5752e0541e67c5 (commit) https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=217aada741347db9b3d9cbd7ca5752e0541e67c5 commit 217aada741347db9b3d9cbd7ca5752e0541e67c5 Author: Jon Turney Date: Sun Dec 5 14:34:41 2021 +0000 Fix format() returning a std::string containing a terminating null https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=a596f6224e1472a106292b8856d9bfe94098cac9 commit a596f6224e1472a106292b8856d9bfe94098cac9 Author: Jon Turney Date: Fri Dec 3 14:27:12 2021 +0000 Send postinstall thread complete message last in that thread Addresses: https://cygwin.com/pipermail/cygwin/2021-November/250084.html After some staring at the code, it looks like it's possible that the cause of this report is the linked list containing log entries to be damaged if multiple threads call endLog() simultaneously. Currently 'Changing gid to Administrators' is logged by the call to nt_sec.setAdminGroup() just after the WM_APP_POSTINSTALL_THREAD_COMPLETE message is been sent. 'Ending cygwin install' is logged just before main exits. Make sending the WM_APP_POSTINSTLL_THREAD_COMPLETE message the last thing that the postinstall thread does This should avoid the potential for endLog() becing called by multiple threads simultaenously. Logging is still lousy with race conditions as the std::stringbuf all threads are writing to is global (leading to messages from multiple threads being concatenated here), and appending to the linked list isn't thread-safe, but this should at least avoid this particular infinite loop. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=fca9a8b72ba94bca826dbbe39d1980f538f57f05 commit fca9a8b72ba94bca826dbbe39d1980f538f57f05 Author: Jon Turney Date: Wed Dec 1 15:06:20 2021 +0000 Drop some cruft in logging The 'hack' referred to in endEntry() was removed in c8356810, but the comment wasn't updated.