git/Documentation
Taylor Blau 03c7a30cee pack-bitmap: reject pseudo-merge "sampleRate" of 0
The "bitmapPseudoMerge.*.sampleRate" configuration controls what
fraction of unstable commits are included in each pseudo-merge group.
The config validation accepts values in the range `[0, 1]`, but a value
of exactly 0 causes a division by zero in `select_pseudo_merges_1()`:

    if (j % (uint32_t)(1.0 / group->sample_rate))

When `sample_rate` is 0, `1.0 / 0.0` produces `+inf`, and casting
infinity to `uint32_t` is undefined behavior in C. On most platforms
this yields 0, making the subsequent modulo operation (`j % 0`) a
fatal arithmetic trap.

This path was not previously reachable because an earlier bug caused
all pseudo-merge candidates to be classified as "stable" (where the
sampling rate is not used), regardless of their actual commit date. Now
that the date classification is fixed, the unstable path is exercised
and the division by zero can fire.

Fix this by changing the validation to require a strict lower bound and
thus reject 0.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2026-05-12 10:36:18 +09:00
..
RelNotes A bit more for -rc2 2026-04-09 11:21:59 -07:00
config pack-bitmap: reject pseudo-merge "sampleRate" of 0 2026-05-12 10:36:18 +09:00
howto meson: make GIT_HTML_PATH configurable 2025-11-06 09:58:56 -08:00
includes
…
mergetools
…
technical doc: replace git config --list/-l with `list` 2026-04-06 09:57:07 -07:00
.gitignore
…
BreakingChanges.adoc rust: we are way beyond 2.53 2026-04-10 08:14:20 -07:00
CodingGuidelines CodingGuidelines: document our style for flags 2026-03-31 20:43:13 -07:00
DecisionMaking.adoc
…
Makefile Merge branch 'en/xdiff-cleanup-2' 2025-12-05 14:49:56 +09:00
MyFirstContribution.adoc Merge branch 'sd/doc-my1c-api-config-reference-fix' 2026-02-13 13:39:26 -08:00
MyFirstObjectWalk.adoc
…
ReviewingGuidelines.adoc
…
SubmittingPatches Merge branch 'jc/doc-wholesale-replace-before-next' 2026-03-19 09:54:56 -07:00
ToolsForGit.adoc
…
asciidoc.conf.in doc: convert git-show to synopsis style 2026-02-05 21:14:05 -08:00
asciidoctor-extensions.rb.in
…
blame-options.adoc doc: blame-options: convert to new doc format 2026-01-09 06:15:31 -08:00
build-docdep.perl
…
cat-texi.perl
…
cmd-list.sh
…
config.adoc Merge branch 'jc/doc-includeif-hasconfig-remote-url-fix' into maint-2.51 2025-10-15 10:29:34 -07:00
date-formats.adoc
…
diff-algorithm-option.adoc blame: make diff algorithm configurable 2025-11-17 09:31:59 -08:00
diff-context-options.adoc diff: document -U without <n> as using default context 2026-03-10 06:17:59 -07:00
diff-format.adoc
…
diff-generate-patch.adoc
…
diff-options.adoc Merge branch 'ty/doc-diff-u-wo-number' 2026-03-24 12:31:34 -07:00
doc-diff
…
docbook-xsl.css
…
docbook.xsl
…
docinfo-html.in
…
everyday.adoco
…
fetch-options.adoc Merge branch 'db/doc-fetch-jobs-auto' 2026-02-27 15:11:54 -08:00
fix-texi.sh
…
for-each-ref-options.adoc doc: fix some style issues in git-clone and for-each-ref-options 2026-02-05 21:14:05 -08:00
format-patch-caveats.adoc doc: add caveat about round-tripping format-patch 2026-02-12 14:37:56 -08:00
format-patch-end-of-commit-message.adoc doc: add caveat about round-tripping format-patch 2026-02-12 14:37:56 -08:00
fsck-msgids.adoc builtin/fsck: move generic HEAD check into `refs_fsck()` 2026-01-12 06:55:41 -08:00
generate-mergetool-list.sh
…
git-add.adoc Documentation: update add --force option + ignore=all config 2026-02-06 09:43:26 -08:00
git-am.adoc Merge branch 'kh/doc-am-xref' 2026-03-02 17:06:52 -08:00
git-annotate.adoc
…
git-apply.adoc
…
git-archimport.adoc
…
git-archive.adoc archive: document --prefix handling of absolute and parent paths 2026-04-08 11:13:52 -07:00
git-backfill.adoc backfill: accept revision arguments 2026-03-26 09:38:06 -07:00
git-bisect-lk2009.adoc
…
git-bisect.adoc bisect: update usage and docs to match each other 2025-10-28 15:41:42 -07:00
git-blame.adoc doc: git-blame: convert to new doc format 2026-01-09 06:15:53 -08:00
git-branch.adoc
…
git-bugreport.adoc
…
git-bundle.adoc
…
git-cat-file.adoc
…
git-check-attr.adoc
…
git-check-ignore.adoc
…
git-check-mailmap.adoc
…
git-check-ref-format.adoc
…
git-checkout-index.adoc
…
git-checkout.adoc doc: fix asciidoc markup issues in several files 2025-12-20 14:55:43 +09:00
git-cherry-pick.adoc
…
git-cherry.adoc
…
git-citool.adoc
…
git-clean.adoc
…
git-clone.adoc Merge branch 'cc/lop-filter-auto' 2026-02-25 11:54:17 -08:00
git-column.adoc
…
git-commit-graph.adoc commit-graph: add new config for changed-paths & recommend it in scalar 2025-10-22 10:40:11 -07:00
git-commit-tree.adoc
…
git-commit.adoc doc: commit: link to git-status(1) on all format options 2025-11-14 08:56:35 -08:00
git-config.adoc Merge branch 'gi/doc-boolean-config-typofix' 2026-03-27 11:00:02 -07:00
git-count-objects.adoc
…
git-credential-cache--daemon.adoc
…
git-credential-cache.adoc
…
git-credential-store.adoc
…
git-credential.adoc
…
git-cvsexportcommit.adoc
…
git-cvsimport.adoc
…
git-cvsserver.adoc
…
git-daemon.adoc
…
git-describe.adoc
…
git-diagnose.adoc
…
git-diff-files.adoc
…
git-diff-index.adoc
…
git-diff-pairs.adoc
…
git-diff-tree.adoc
…
git-diff.adoc
…
git-difftool.adoc
…
git-fast-export.adoc
…
git-fast-import.adoc fast-import: add 'strip-if-invalid' mode to '--signed-tags=<mode>' 2026-03-26 12:42:57 -07:00
git-fetch-pack.adoc
…
git-fetch.adoc doc: convert git fetch to synopsis style 2025-11-19 15:00:37 -08:00
git-filter-branch.adoc
…
git-fmt-merge-msg.adoc
…
git-for-each-ref.adoc
…
git-for-each-repo.adoc
…
git-format-patch.adoc Merge branch 'mf/format-patch-cover-letter-format' 2026-04-03 13:01:08 -07:00
git-fsck-objects.adoc
…
git-fsck.adoc
…
git-fsmonitor--daemon.adoc
…
git-gc.adoc
…
git-get-tar-commit-id.adoc
…
git-grep.adoc
…
git-gui.adoc
…
git-hash-object.adoc
…
git-help.adoc
…
git-history.adoc builtin/history: implement "split" subcommand 2026-03-03 15:09:37 -08:00
git-hook.adoc hook: reject unknown hook names in git-hook(1) 2026-03-25 14:00:48 -07:00
git-http-backend.adoc
…
git-http-fetch.adoc
…
git-http-push.adoc
…
git-imap-send.adoc
…
git-index-pack.adoc
…
git-init-db.adoc
…
git-init.adoc
…
git-instaweb.adoc
…
git-interpret-trailers.adoc doc: interpret-trailers: normalize and fill out options 2026-03-16 15:04:37 -07:00
git-last-modified.adoc last-modified: change default max-depth to 0 2026-01-20 14:13:04 -08:00
git-log.adoc
…
git-ls-files.adoc
…
git-ls-remote.adoc
…
git-ls-tree.adoc
…
git-mailinfo.adoc
…
git-mailsplit.adoc
…
git-maintenance.adoc maintenance: add 'is-needed' subcommand 2025-11-10 09:28:48 -08:00
git-merge-base.adoc
…
git-merge-file.adoc merge-file: honor merge.conflictStyle outside of a repository 2026-02-07 17:04:26 -08:00
git-merge-index.adoc
…
git-merge-one-file.adoc
…
git-merge-tree.adoc
…
git-merge.adoc
…
git-mergetool--lib.adoc
…
git-mergetool.adoc
…
git-mktag.adoc
…
git-mktree.adoc
…
git-multi-pack-index.adoc midx: enable reachability bitmaps during MIDX compaction 2026-02-24 11:16:35 -08:00
git-mv.adoc
…
git-name-rev.adoc
…
git-notes.adoc
…
git-p4.adoc
…
git-pack-objects.adoc pack-objects: support excluded-open packs with --stdin-packs 2026-03-27 13:40:40 -07:00
git-pack-redundant.adoc
…
git-pack-refs.adoc
…
git-patch-id.adoc doc: patch-id: see also git-cherry(1) 2026-02-17 10:49:51 -08:00
git-prune-packed.adoc
…
git-prune.adoc
…
git-pull.adoc Merge branch 'je/doc-pull' 2025-12-14 17:04:37 +09:00
git-push.adoc doc: convert git push to synopsis style 2025-11-19 15:00:45 -08:00
git-quiltimport.adoc
…
git-range-diff.adoc
…
git-read-tree.adoc
…
git-rebase.adoc rebase: support --trailer 2026-03-06 13:02:20 -08:00
git-receive-pack.adoc
…
git-reflog.adoc
…
git-refs.adoc
…
git-remote-ext.adoc
…
git-remote-fd.adoc
…
git-remote-helpers.adoco
…
git-remote.adoc doc: convert git-remote to synopsis style 2025-12-21 11:33:10 +09:00
git-repack.adoc doc: correct minor wording issues 2025-12-20 14:55:43 +09:00
git-replace.adoc
…
git-replay.adoc replay: allow to specify a ref with option --ref 2026-04-01 21:34:25 -07:00
git-repo.adoc Merge branch 'jt/repo-structure-extrema' 2026-03-16 10:48:14 -07:00
git-request-pull.adoc
…
git-rerere.adoc rerere: minor documantation update 2026-02-09 11:58:53 -08:00
git-reset.adoc doc: git-reset: clarify `git reset <pathspec>` 2026-01-06 08:10:14 +09:00
git-restore.adoc
…
git-rev-list.adoc
…
git-rev-parse.adoc Merge branch 'bc/sha1-256-interop-01' 2025-10-22 11:38:58 -07:00
git-revert.adoc
…
git-rm.adoc
…
git-send-email.adoc Merge branch 'dt/send-email-client-cert' 2026-03-12 10:56:05 -07:00
git-send-pack.adoc
…
git-sh-i18n--envsubst.adoc
…
git-sh-i18n.adoc
…
git-sh-setup.adoc
…
git-shell.adoc
…
git-shortlog.adoc Merge branch 'kh/doc-shortlog-fix' 2026-02-11 12:29:07 -08:00
git-show-branch.adoc
…
git-show-index.adoc
…
git-show-ref.adoc
…
git-show.adoc doc: convert git-show to synopsis style 2026-02-05 21:14:05 -08:00
git-sparse-checkout.adoc Merge branch 'ds/sparse-checkout-clean' 2025-10-28 10:29:09 -07:00
git-stage.adoc doc: convert git stage to use synopsis block 2025-12-21 11:33:10 +09:00
git-stash.adoc docs: fix "git stash [push]" documentation 2026-03-30 08:19:40 -07:00
git-status.adoc doc: convert git-status tables to AsciiDoc format 2025-12-21 11:33:10 +09:00
git-stripspace.adoc
…
git-submodule.adoc doc: convert git-submodule to synopsis style 2026-02-05 21:14:05 -08:00
git-svn.adoc
…
git-switch.adoc
…
git-symbolic-ref.adoc
…
git-tag.adoc Merge branch 'cc/fast-import-strip-signed-tags' 2025-10-28 10:29:09 -07:00
git-tools.adoc
…
git-unpack-file.adoc
…
git-unpack-objects.adoc
…
git-update-index.adoc
…
git-update-ref.adoc Merge branch 'sb/doc-update-ref-markup-fix' 2026-01-23 13:34:35 -08:00
git-update-server-info.adoc
…
git-upload-archive.adoc
…
git-upload-pack.adoc
…
git-var.adoc doc: replace git config --list/-l with `list` 2026-04-06 09:57:07 -07:00
git-verify-commit.adoc
…
git-verify-pack.adoc
…
git-verify-tag.adoc
…
git-version.adoc
…
git-web--browse.adoc
…
git-whatchanged.adoc
…
git-worktree.adoc Merge branch 'sb/doc-worktree-prune-expire-improvement' 2026-02-09 12:09:10 -08:00
git-write-tree.adoc
…
git.adoc Merge branch 'os/doc-git-custom-commands' 2026-03-16 10:48:14 -07:00
gitattributes.adoc
…
gitcli.adoc doc: clarify command equivalence comment 2025-11-04 09:25:51 -08:00
gitcore-tutorial.adoc
…
gitcredentials.adoc Merge branch 'mh/doc-credential-url-prefix' into maint-2.51 2025-10-15 10:29:35 -07:00
gitcvs-migration.adoc doc: gitcvs-migration: rephrase “man page” 2026-04-06 09:57:07 -07:00
gitdatamodel.adoc doc: remove stray text in Git data model 2025-12-03 00:17:07 -08:00
gitdiffcore.adoc
…
giteveryday.adoc
…
gitfaq.adoc Merge branch 'bc/doc-stash-import-export' 2026-01-16 12:40:27 -08:00
gitformat-bundle.adoc
…
gitformat-chunk.adoc
…
gitformat-commit-graph.adoc
…
gitformat-index.adoc
…
gitformat-loose.adoc rust: add a new binary object map format 2026-02-07 17:41:03 -08:00
gitformat-pack.adoc midx: do not require packs to be sorted in lexicographic order 2026-02-24 11:16:33 -08:00
gitformat-signature.adoc
…
gitglossary.adoc
…
githooks.adoc refs: add 'preparing' phase to the reference-transaction hook 2026-03-16 21:00:44 -07:00
gitignore.adoc doc: gitignore: clarify pattern base for info/exclude and core.excludesFile 2026-03-28 11:41:59 -07:00
gitk.adoc
…
gitmailmap.adoc
…
gitmodules.adoc Documentation: update add --force option + ignore=all config 2026-02-06 09:43:26 -08:00
gitnamespaces.adoc
…
gitpacking.adoc
…
gitprotocol-capabilities.adoc
…
gitprotocol-common.adoc
…
gitprotocol-http.adoc doc: clarify server behavior for invalid 'want' lines in HTTP protocol 2025-11-06 09:45:38 -08:00
gitprotocol-pack.adoc doc: gitprotocol-pack: normalize italic formatting 2026-03-02 21:35:05 -08:00
gitprotocol-v2.adoc doc: replace git config --list/-l with `list` 2026-04-06 09:57:07 -07:00
gitremote-helpers.adoc
…
gitrepository-layout.adoc
…
gitrevisions.adoc
…
gitsubmodules.adoc
…
gittutorial-2.adoc
…
gittutorial.adoc doc: replace git config --list/-l with `list` 2026-04-06 09:57:07 -07:00
gitweb.adoc
…
gitweb.conf.adoc
…
gitworkflows.adoc
…
glossary-content.adoc doc: add an explanation of Git's data model 2025-11-12 12:21:15 -08:00
i18n.adoc
…
install-doc-quick.sh
…
install-webdoc.sh
…
line-range-format.adoc
…
line-range-options.adoc doc: note that -L supports patch formatting and pickaxe options 2026-03-16 21:05:42 -07:00
lint-delimited-sections.perl
…
lint-documentation-style.perl
…
lint-fsck-msgids.perl
…
lint-gitlink.perl lint-gitlink: preemptively ignore all /ifn?def|endif/ macros 2026-01-21 08:26:00 -08:00
lint-man-end-blurb.perl
…
lint-man-section-order.perl
…
lint-manpages.sh
…
manpage-bold-literal.xsl
…
manpage-normal.xsl
…
manpage.xsl
…
merge-options.adoc doc: convert git pull to synopsis style 2025-11-19 15:00:42 -08:00
merge-strategies.adoc
…
meson.build Merge branch 'pw/meson-doc-mergetool' 2026-03-02 17:06:52 -08:00
object-format-disclaimer.adoc
…
pack-refs-options.adoc
…
pretty-formats.adoc docs/pretty-formats: add %(count) and %(total) 2026-03-23 13:06:58 -07:00
pretty-options.adoc
…
pull-fetch-param.adoc doc: pull-fetch-param typofix 2025-11-24 10:55:48 -08:00
ref-reachability-filters.adoc
…
ref-storage-format.adoc docs: correct information about reftable 2026-04-08 07:18:56 -07:00
rerere-options.adoc doc: rerere-options.adoc: link to git-rerere(1) 2026-02-10 12:27:07 -08:00
rev-list-description.adoc
…
rev-list-options.adoc Merge branch 'ds/revision-maximal-only' 2026-02-25 11:54:17 -08:00
revisions.adoc
…
scalar.adoc scalar: document config settings 2025-12-16 09:42:44 +09:00
sequencer.adoc
…
signoff-option.adoc signoff-option: linkify the reference to gitfaq 2025-12-19 21:51:01 +09:00
texi.xsl
…
trace2-target-values.adoc
…
transfer-data-leaks.adoc
…
urls-remotes.adoc doc: convert git pull to synopsis style 2025-11-19 15:00:42 -08:00
urls.adoc
…
user-manual.adoc doc: replace git config --list/-l with `list` 2026-04-06 09:57:07 -07:00