{"push_id":2961421211,"size":2,"distinct_size":2,"ref":"refs/heads/fix-gc-segfault","head":"8979693922364ef2e4a84a29298b081e86fa9ffa","before":"b920785760dc5f94f5a6b67da91c7702899b15b5","commits":[{"sha":"eb6d10133ac9b1977db81ff9c243e77639226f85","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"pack-objects (mingw): demonstrate a segmentation fault with large deltas\n\nThere is a problem in the way 9ac3f0e5b3e4 (pack-objects: fix\nperformance issues on packing large deltas, 2018-07-22) initializes that\nmutex in the `packing_data` struct. The problem manifests in a\nsegmentation fault on Windows, when a mutex (AKA critical section) is\naccessed without being initialized. (With pthreads, you apparently do\nnot really have to initialize them?)\n\nThis was reported in https://github.com/git-for-windows/git/issues/1839.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>","distinct":true,"url":"https://api.github.com/repos/jamill/git/commits/eb6d10133ac9b1977db81ff9c243e77639226f85"},{"sha":"8979693922364ef2e4a84a29298b081e86fa9ffa","author":{"name":"Johannes Schindelin","email":"53fb8db7833fca1e1746dd8592f61048d350f64c@gmx.de"},"message":"pack-objects (mingw): initialize `packing_data` mutex in the correct spot\n\nIn 9ac3f0e5b3e4 (pack-objects: fix performance issues on packing large\ndeltas, 2018-07-22), a mutex was introduced that is used to guard the\ncall to set the delta size. This commit even added code to initialize\nit, but at an incorrect spot: in `init_threaded_search()`, while the\ncall to `oe_set_delta_size()` (and hence to `packing_data_lock()`) can\nhappen in the call chain `check_object()` <- `get_object_details()` <-\n`prepare_pack()` <- `cmd_pack_objects()`, which is long before the\n`prepare_pack()` function calls `ll_find_deltas()` (which initializes\nthe threaded search).\n\nAnother tell-tale that the mutex was initialized in an incorrect spot is\nthat the function to initialize it lives in builtin/, while the code\nthat uses the mutex is defined in a libgit.a header file.\n\nLet's use a more appropriate function: `prepare_packing_data()`, which\nnot only lives in libgit.a, but *has* to be called before the\n`packing_data` struct is used that contains that mutex.\n\nThis fixes https://github.com/git-for-windows/git/issues/1839.\n\nSigned-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>","distinct":true,"url":"https://api.github.com/repos/jamill/git/commits/8979693922364ef2e4a84a29298b081e86fa9ffa"}]}
{"actor":{"display_login":"jamill"}}