{"push_id":621884657,"size":7,"distinct_size":6,"ref":"refs/heads/master","head":"d3a3aead4264412696cf241c3baf19e8aec5a499","before":"0821ad09cc2c8251a314c5cbaa966442537024ae","commits":[{"sha":"cd52425b0c121014c3aebcca5bb7af34a696c520","author":{"email":"96f164ad4d9b2b0dacf8ebee2bb1eeb3aa69adf1@efcs.ca","name":"Eric Fiselier"},"message":"Merge branch 'master' of http://llvm.org/git/libcxx","distinct":false,"url":"https://api.github.com/repos/efcs/libcxx/commits/cd52425b0c121014c3aebcca5bb7af34a696c520"},{"sha":"60acd4d70e095900c13a82bf382811ac6bbbb6f7","author":{"email":"96f164ad4d9b2b0dacf8ebee2bb1eeb3aa69adf1@efcs.ca","name":"Eric Fiselier"},"message":"Merge branch 'master' of http://llvm.org/git/libcxx","distinct":true,"url":"https://api.github.com/repos/efcs/libcxx/commits/60acd4d70e095900c13a82bf382811ac6bbbb6f7"},{"sha":"e5d91e17d7485bf1a44f32a6b616a1d70e8ac775","author":{"email":"96f164ad4d9b2b0dacf8ebee2bb1eeb3aa69adf1@efcs.ca","name":"Eric Fiselier"},"message":"Merge branch 'master' of http://llvm.org/git/libcxx","distinct":true,"url":"https://api.github.com/repos/efcs/libcxx/commits/e5d91e17d7485bf1a44f32a6b616a1d70e8ac775"},{"sha":"1d55ecf51364279841f140f0255af8f496a7ee3f","author":{"email":"96f164ad4d9b2b0dacf8ebee2bb1eeb3aa69adf1@efcs.ca","name":"Eric Fiselier"},"message":"[libcxx] Fix bug in shared_timed_mutex that could cause a program to hang.\n\nSummary:\nThe summary of the bug, provided by Stephan T. Lavavej:\n\nIn shared_timed_mutex::try_lock_until() (line 195 in 3.6.0), you need to deliver a notification.  The scenario is:\n \n* There are N threads holding the shared lock.\n* One thread calls try_lock_until() to attempt to acquire the exclusive lock.  It sets the \"I want to write\" bool/bit, then waits for the N readers to drain away.\n* K more threads attempt to acquire the shared lock, but they notice that someone said \"I want to write\", so they block on a condition_variable.\n* At least one of the N readers is stubborn and doesn't release the shared lock.\n* The wannabe-writer times out, gives up, and unsets the \"I want to write\" bool/bit.\n \nAt this point, a notification (it needs to be notify_all) must be delivered to the condition_variable that the K wannabe-readers are waiting on.  Otherwise, they can block forever without waking up.\n\n\n\nReviewers: mclow.lists, jyasskin\n\nReviewed By: jyasskin\n\nSubscribers: jyasskin, cfe-commits\n\nDifferential Revision: http://reviews.llvm.org/D8796\n\ngit-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@233944 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/efcs/libcxx/commits/1d55ecf51364279841f140f0255af8f496a7ee3f"},{"sha":"6be02cb83f78d11afb94c3886729ce4198fa61e0","author":{"email":"96f164ad4d9b2b0dacf8ebee2bb1eeb3aa69adf1@efcs.ca","name":"Eric Fiselier"},"message":"Fix race conditions in test class used throughout the std::thread tests.\n\nThe test class 'G' reads and writes to the same static variables in its\nconstructor, destructor and call operator. When threads are\nconstructed using `std::thread t((G()))` there is a race condition between the\ndestruction of the temporary and the execution of `G::operator()()`.\n\nThe fix is to simply create the input before creating the thread.\n\n\ngit-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@233946 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/efcs/libcxx/commits/6be02cb83f78d11afb94c3886729ce4198fa61e0"},{"sha":"37528ebba720bf422ffbbfb9b7cf8c79512a0778","author":{"email":"96f164ad4d9b2b0dacf8ebee2bb1eeb3aa69adf1@efcs.ca","name":"Eric Fiselier"},"message":"Merge branch 'master' of http://llvm.org/git/libcxx","distinct":true,"url":"https://api.github.com/repos/efcs/libcxx/commits/37528ebba720bf422ffbbfb9b7cf8c79512a0778"},{"sha":"d3a3aead4264412696cf241c3baf19e8aec5a499","author":{"email":"96f164ad4d9b2b0dacf8ebee2bb1eeb3aa69adf1@efcs.ca","name":"Eric Fiselier"},"message":"Merge branch 'master' of github.com:efcs/libcxx","distinct":true,"url":"https://api.github.com/repos/efcs/libcxx/commits/d3a3aead4264412696cf241c3baf19e8aec5a499"}]}