[setup - the official Cygwin setup program] branch topic/logging-race-fix, created. release_2.910-3-g217aada7

Jon TURNEY jturney@sourceware.org
Sun Dec 5 15:15:44 GMT 2021

        at  217aada741347db9b3d9cbd7ca5752e0541e67c5 (commit)


commit 217aada741347db9b3d9cbd7ca5752e0541e67c5
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sun Dec 5 14:34:41 2021 +0000

    Fix format() returning a std::string containing a terminating null


commit a596f6224e1472a106292b8856d9bfe94098cac9
Author: Jon Turney <jon.turney@dronecode.org.uk>
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


commit fca9a8b72ba94bca826dbbe39d1980f538f57f05
Author: Jon Turney <jon.turney@dronecode.org.uk>
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.

More information about the Cygwin-apps-cvs mailing list