<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/ci, branch v2.48.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.48.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.48.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2025-01-02T21:37:08Z</updated>
<entry>
<title>Merge branch 'jk/lsan-race-ignore-false-positive'</title>
<updated>2025-01-02T21:37:08Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-01-02T21:37:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=effbef2bebed87b1ce46d449862fb5121dba9d34'/>
<id>urn:sha1:effbef2bebed87b1ce46d449862fb5121dba9d34</id>
<content type='text'>
CI jobs that run threaded programs under LSan has been giving false
positives from time to time, which has been worked around.

This is an alternative to the jk/lsan-race-with-barrier topic with
much smaller change to the production code.

* jk/lsan-race-ignore-false-positive:
  test-lib: ignore leaks in the sanitizer's thread code
  test-lib: check leak logs for presence of DEDUP_TOKEN
  test-lib: simplify leak-log checking
  test-lib: rely on logs to detect leaks
  Revert barrier-based LSan threading race workaround
</content>
</entry>
<entry>
<title>Revert barrier-based LSan threading race workaround</title>
<updated>2025-01-01T22:13:01Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-01-01T22:13:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=fc89d14c639faec779956b4e3cd873c07bd4327b'/>
<id>urn:sha1:fc89d14c639faec779956b4e3cd873c07bd4327b</id>
<content type='text'>
The extra "barrier" approach was too much code whose sole purpose
was to work around a race that is not even ours (i.e. in LSan's
teardown code).

In preparation for queuing a solution taking a much-less-invasive
approach, let's revert them.
</content>
</entry>
<entry>
<title>Merge branch 'jk/lsan-race-with-barrier'</title>
<updated>2025-01-01T17:21:15Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-01-01T17:21:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d893741e025a3408c7616a35db91b819327c078f'/>
<id>urn:sha1:d893741e025a3408c7616a35db91b819327c078f</id>
<content type='text'>
CI jobs that run threaded programs under LSan has been giving false
positives from time to time, which has been worked around.

* jk/lsan-race-with-barrier:
  grep: work around LSan threading race with barrier
  index-pack: work around LSan threading race with barrier
  thread-utils: introduce optional barrier type
  Revert "index-pack: spawn threads atomically"
  test-lib: use individual lsan dir for --stress runs
</content>
</entry>
<entry>
<title>Merge branch 'ps/weak-sha1-for-tail-sum-fix'</title>
<updated>2025-01-01T17:21:14Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-01-01T17:21:14Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=98422943f013b56352dd1a2f8823368b27267e57'/>
<id>urn:sha1:98422943f013b56352dd1a2f8823368b27267e57</id>
<content type='text'>
An earlier "csum-file checksum does not have to be computed with
sha1dc" topic had a few code paths that had initialized an
implementation of a hash function to be used by an unmatching hash
by mistake, which have been corrected.

* ps/weak-sha1-for-tail-sum-fix:
  ci: exercise unsafe OpenSSL backend
  builtin/fast-import: fix segfault with unsafe SHA1 backend
  bulk-checkin: fix segfault with unsafe SHA1 backend
</content>
</entry>
<entry>
<title>ci: exercise unsafe OpenSSL backend</title>
<updated>2024-12-30T14:46:30Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2024-12-30T14:24:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=599a63409bed67d61c359d316da5a10bcddc954b'/>
<id>urn:sha1:599a63409bed67d61c359d316da5a10bcddc954b</id>
<content type='text'>
In the preceding commit we have fixed a segfault when using an unsafe
SHA1 backend that is different from the safe one. This segfault only
went by unnoticed because we never set up an unsafe backend in our CI
systems. Fix this ommission by setting `OPENSSL_SHA1_UNSAFE` in our
TEST-vars job.

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>thread-utils: introduce optional barrier type</title>
<updated>2024-12-30T14:18:57Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2024-12-30T04:28:30Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7d0037b59ae0d22a2718c28d8e70e3ef3f3f991e'/>
<id>urn:sha1:7d0037b59ae0d22a2718c28d8e70e3ef3f3f991e</id>
<content type='text'>
One thread primitive we don't yet support is a barrier: it waits for all
threads to reach a synchronization point before letting any of them
continue. This would be useful for avoiding the LSan race we see in
index-pack (and other places) by having all threads complete their
initialization before any of them start to do real work.

POSIX introduced a pthread_barrier_t in 2004, which does what we want.
But if we want to rely on it:

  1. Our Windows pthread emulation would need a new set of wrapper
     functions. There's a Synchronization Barrier primitive there, which
     was introduced in Windows 8 (which is old enough for us to depend
     on).

  2. macOS (and possibly other systems) has pthreads but not
     pthread_barrier_t. So there we'd have to implement our own barrier
     based on the mutex and cond primitives.

Those are do-able, but since we only care about avoiding races in our
LSan builds, there's an easier way: make it a noop on systems without a
native pthread barrier.

This patch introduces a "maybe_thread_barrier" API. The clunky name
(rather than just using pthread_barrier directly) should hopefully clue
people in that on some systems it will do nothing. It's wired to a
Makefile knob which has to be triggered manually, and we enable it for
the linux-leaks CI jobs (since we know we'll have it there).

There are some other possible options:

  - we could turn it on all the time for Linux systems based on uname.
    But we really only care about it for LSan builds, and there is no
    need to add extra code to regular builds.

  - we could turn it on only for LSan builds. But that would break
    builds on non-Linux platforms (like macOS) that otherwise should
    support sanitizers.

  - we could trigger only on the combination of Linux and LSan together.
    This isn't too hard to do, but the uname check isn't completely
    accurate. It is really about what your libc supports, and non-glibc
    systems might not have it (though at least musl seems to).

    So we'd risk breaking builds on those systems, which would need to
    add a new knob. Though the upside would be that running local "make
    SANITIZE=leak test" would be protected automatically.

And of course none of this protects LSan runs from races on systems
without pthread barriers. It's probably OK in practice to protect only
our CI jobs, though. The race is rare-ish and most leak-checking happens
through CI.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'ps/ci-meson'</title>
<updated>2024-12-23T17:32:25Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2024-12-23T17:32:24Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=83c8f7623538e67262db18c98d9c1da6b50e289d'/>
<id>urn:sha1:83c8f7623538e67262db18c98d9c1da6b50e289d</id>
<content type='text'>
The meson-build procedure is integrated into CI to catch and
prevent bitrotting.

* ps/ci-meson:
  ci: wire up Meson builds
  t: introduce compatibility options to clar-based tests
  t: fix out-of-tree tests for some git-p4 tests
  Makefile: detect missing Meson tests
  meson: detect missing tests at configure time
  t/unit-tests: rename clar-based unit tests to have a common prefix
  Makefile: drop -DSUPPRESS_ANNOTATED_LEAKS
  ci/lib: support custom output directories when creating test artifacts
</content>
</entry>
<entry>
<title>Merge branch 'ps/ci-gitlab-update'</title>
<updated>2024-12-23T17:32:07Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2024-12-23T17:32:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=19fbad7918f6bd313bdcffc7c71e0729f3a0e0c2'/>
<id>urn:sha1:19fbad7918f6bd313bdcffc7c71e0729f3a0e0c2</id>
<content type='text'>
GitLab CI updates.

* ps/ci-gitlab-update:
  ci/lib: fix "CI setup" sections with GitLab CI
  ci/lib: do not interpret escape sequences in `group ()` arguments
  ci/lib: remove duplicate trap to end "CI setup" group
  gitlab-ci: update macOS images to Sonoma
</content>
</entry>
<entry>
<title>Merge branch 'ps/build'</title>
<updated>2024-12-16T01:54:33Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2024-12-16T01:54:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=29e5596eb8f82015ddb8666079039ae851b8d182'/>
<id>urn:sha1:29e5596eb8f82015ddb8666079039ae851b8d182</id>
<content type='text'>
Build procedure update plus introduction of Meson based builds.

* ps/build: (24 commits)
  Introduce support for the Meson build system
  Documentation: add comparison of build systems
  t: allow overriding build dir
  t: better support for out-of-tree builds
  Documentation: extract script to generate a list of mergetools
  Documentation: teach "cmd-list.perl" about out-of-tree builds
  Documentation: allow sourcing generated includes from separate dir
  Makefile: simplify building of templates
  Makefile: write absolute program path into bin-wrappers
  Makefile: allow "bin-wrappers/" directory to exist
  Makefile: refactor generators to be PWD-independent
  Makefile: extract script to generate gitweb.js
  Makefile: extract script to generate gitweb.cgi
  Makefile: extract script to massage Python scripts
  Makefile: extract script to massage Shell scripts
  Makefile: use "generate-perl.sh" to massage Perl library
  Makefile: extract script to massage Perl scripts
  Makefile: consistently use PERL_PATH
  Makefile: generate doc versions via GIT-VERSION-GEN
  Makefile: generate "git.rc" via GIT-VERSION-GEN
  ...
</content>
</entry>
<entry>
<title>Merge branch 'es/oss-fuzz'</title>
<updated>2024-12-13T15:33:42Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2024-12-13T15:33:41Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=cd0a222f088992fc42cdd9bc0df4aa25474f0639'/>
<id>urn:sha1:cd0a222f088992fc42cdd9bc0df4aa25474f0639</id>
<content type='text'>
Backport oss-fuzz tests for us to our codebase.

* es/oss-fuzz:
  fuzz: port fuzz-url-decode-mem from OSS-Fuzz
  fuzz: port fuzz-parse-attr-line from OSS-Fuzz
  fuzz: port fuzz-credential-from-url-gently from OSS-Fuzz
</content>
</entry>
</feed>
