Age | Commit message (Collapse) | Author | Files | Lines |
|
The t5562 script occasionally takes 60 extra seconds to complete due to
a race condition in the invoke-with-content-length.pl helper.
The way it's supposed to work is this:
- we set up a SIGCLD handler
- we kick off http-backend and write to it with a set content-length,
but _don't_ close the pipe
- we sleep for 60 seconds, assuming that SIGCLD from http-backend
finishing will interrupt us
- after the sleep finishes (whetherby 60 seconds or because it was
interrupted by the signal), we check a flag to see if our SIGCLD
handler was called. If not, then we complain.
This usually completes immediately, because the signal interrupts our
sleep. But very occasionally the child process dies _before_ we hit the
sleep, so we don't realize it. The test still completes successfully
(because our $exited flag is set), but it takes an extra 60 seconds.
There's no way to check the flag and sleep atomically. So the best we
can do with this approach is to sleep in smaller chunks (say, 1 second)
and check the flag incrementally. Then we waste a maximum of 1 second if
we lose the race. This was proposed in:
https://lore.kernel.org/git/20190218205028.32486-1-max@max630.net/
and it does work. But we can do better.
Instead of blocking on sleep and waiting for the child signal to
interrupt us, we can block on the child exiting and set an alarm signal
to trigger the timeout.
This lets us exit the script immediately when the child behaves (with no
race possible), and wait a maximum of 60 seconds when it doesn't.
Note one small subtlety: perl is very willing to restart the waitpid()
call after the alarm is delivered, even if we've thrown an exception via
die. "perldoc -f alarm" claims you can get around this with an eval/die
combo (and even has some example code), but it doesn't seem to work for
me with waitpid(); instead, we continue waiting until the child exits.
So instead, we'll instruct the child process to exit in the alarm
handler itself. In the original code this was done by calling
close($out). That would continue to work, since our child is always
http-backend, which should exit when its stdin closes. But we can be
even more robust against a hung or confused child by sending a KILL
signal, which should terminate it immediately.
Reported-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
|
|
Signed-off-by: Junio C Hamano <gitster@pobox.com>
|
|
Codepath to access recently added oidtree data structure had
to make unaligned accesses to oids, which has been corrected.
* rs/oidtree-alignment-fix:
oidtree: avoid unaligned access to crit-bit tree
|
|
l10n-2.33.0-rnd2
* tag 'l10n-2.33.0-rnd2' of git://github.com/git-l10n/git-po: (46 commits)
l10n: sv.po: Update Swedish translation (5230t0f0u)
l10n: TEAMS: change Simplified Chinese team leader
l10n: tr: v2.33 (round 2)
l10n: es: 2.33.0 round 2
l10n: zh_CN: for git v2.33.0 l10n round 2
l10n: zh_CN: Revision for git v2.32.0 l10n round 1
l10n: README: refactor to use GFM syntax
l10n: update German translation for Git v2.33.0 (rnd2)
l10n: pt_PT: v2.33.0 round 2
l10n: pt_PT: git-po-helper update
l10n: pt_PT: update translation table
l10n: zh_TW.po: remove the obsolete glossary
l10n: vi.po(5230t): Updated translation for v2.32.0 round 2
l10n: fr.po v2.33 rnd 2
l10n: id: po-id for 2.33.0 round 2
l10n: zh_TW.po: update for v2.33.0 rnd 2
l10n: git.pot: v2.33.0 round 2 (11 new, 8 removed)
l10n: de.po: fix typos
l10n: update German translation for Git v2.33.0
l10n: fr.po fix typos in commands and variables
...
|
|
Also fixed some typos reported by "git-po-helper".
Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
|
|
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
|
|
The flexible array member "k" of struct cb_node is used to store the key
of the crit-bit tree node. It offers no alignment guarantees -- in fact
the current struct layout puts it one byte after a 4-byte aligned
address, i.e. guaranteed to be misaligned.
oidtree uses a struct object_id as cb_node key. Since cf0983213c (hash:
add an algo member to struct object_id, 2021-04-26) it requires 4-byte
alignment. The mismatch is reported by UndefinedBehaviorSanitizer at
runtime like this:
hash.h:277:2: runtime error: member access within misaligned address 0x00015000802d for type 'struct object_id', which requires 4 byte alignment
0x00015000802d: note: pointer points here
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
^
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior hash.h:277:2 in
We can fix that by:
1. eliminating the alignment requirement of struct object_id,
2. providing the alignment in struct cb_node, or
3. avoiding the issue by only using memcpy to access "k".
Currently we only store one of two values in "algo" in struct object_id.
We could use a uint8_t for that instead and widen it only once we add
support for our twohundredth algorithm or so. That would not only avoid
alignment issues, but also reduce the memory requirements for each
instance of struct object_id by ca. 9%.
Supporting keys with alignment requirements might be useful to spread
the use of crit-bit trees. It can be achieved by using a wider type for
"k" (e.g. uintmax_t), using different types for the members "byte" and
"otherbits" (e.g. uint16_t or uint32_t for each), or by avoiding the use
of flexible arrays like khash.h does.
This patch implements the third option, though, because it has the least
potential for causing side-effects and we're close to the next release.
If one of the other options is implemented later as well to get their
additional benefits we can get rid of the extra copies introduced here.
Reported-by: Andrzej Hunt <andrzej@ahunt.org>
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
|
|
* 'next' of github.com:ChrisADR/git-po:
l10n: es: 2.33.0 round 2
|
|
Signed-off-by: Emir Sarı <bitigchi@me.com>
|
|
Signed-off-by: Christopher Diaz Riveros <christopher.diaz.riv@gmail.com>
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Javier Spagnoletti phansys@gmail.com
Signed-off-by: Cleydyr Albuquerque <cleydyr@gmail.com>
Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com>
Signed-off-by: Guillermo Ramos <gramosg>
|
|
Translate 48 new messages (5230t0f0u) for git 2.33.0, and also fixed
typos found by "git-po-helper".
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Fangyi Zhou <me@fangyi.io>
|
|
Signed-off-by: Fangyi Zhou <me@fangyi.io>
|
|
Format README.md using GFM (GitHub Flavored Markdown) syntax.
- In order to use more than 3 level headings, use ATX style headings
instead of setext style headings.
- In order to add highlights for code blocks, use fenced code blocks
instead of indented code blocks.
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
|
|
* 'l10n-2.33-rnd2' of github.com:ralfth/git:
l10n: update German translation for Git v2.33.0 (rnd2)
|
|
* 'pt-PT' of github.com:git-l10n-pt-PT/git-po:
l10n: pt_PT: v2.33.0 round 2
l10n: pt_PT: git-po-helper update
l10n: pt_PT: update translation table
|
|
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
|
|
* translation of new entries
Signed-off-by: Daniel Santos <hello@brighterdan.com>
|
|
* run git-po-helper update pt_PT.po
Signed-off-by: Daniel Santos <hello@brighterdan.com>
|
|
* updated translation table
Signed-off-by: Daniel Santos <hello@brighterdan.com>
|
|
* 'loc/zh_TW/210814' of github.com:l10n-tw/git-po:
l10n: zh_TW.po: remove the obsolete glossary
l10n: zh_TW.po: update for v2.33.0 rnd 2
|
|
Signed-off-by: Yi-Jyun Pan <pan93412@gmail.com>
|
|
* 'master' of github.com:vnwildman/git:
l10n: vi.po(5230t): Updated translation for v2.32.0 round 2
|
|
* 'po-id' of github.com:bagasme/git-po:
l10n: id: po-id for 2.33.0 round 2
|
|
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
|
|
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
|
|
Update translation for following component:
* builtin/submodule--helper.c
Translate following new component:
* builtin/revert.c
Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
|
|
Signed-off-by: Yi-Jyun Pan <pan93412@gmail.com>
|
|
* 'master' of github.com:vnwildman/git:
l10n: vi.po(5227t): Fixed typo after run git-po-helper
|
|
Generate po/git.pot from v2.33.0-rc2 for git v2.33.0 l10n round 2.
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
|
|
* 'master' of github.com:git/git: (51 commits)
Git 2.33-rc2
object-file: use unsigned arithmetic with bit mask
Revert 'diff-merges: let "-m" imply "-p"'
object-store: avoid extra ';' from KHASH_INIT
oidtree: avoid nested struct oidtree_node
Git 2.33-rc1
test: fix for COLUMNS and bash 5
The eighth batch
diff: --pickaxe-all typofix
mingw: align symlinks-related rmdir() behavior with Linux
t7508: avoid non POSIX BRE
use fspathhash() everywhere
t0001: fix broken not-quite getcwd(3) test in bed67874e2
Documentation: render special characters correctly
reset: clear_unpack_trees_porcelain to plug leak
builtin/rebase: fix options.strategy memory lifecycle
builtin/merge: free found_ref when done
builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv
convert: release strbuf to avoid leak
read-cache: call diff_setup_done to avoid leak
...
|
|
* 'master' of github.com:nafmo/git-l10n-sv:
l10n: sv.po: Update Swedish translation (5227t0f0u)
|
|
* 'master' of github.com:alshopov/git-po:
l10n: bg.po: Updated Bulgarian translation (5227t)
|
|
* 'l10n-2.33' of github.com:ralfth/git:
l10n: de.po: fix typos
l10n: update German translation for Git v2.33.0
|
|
* 'fr_fix_typos' of github.com:jnavila/git:
l10n: fr.po fix typos in commands and variables
|
|
* 'master' of github.com:Softcatala/git-po:
l10n: Update Catalan translation
|
|
Fix some typos found by `./git-po-helper check-po po/de.po`.
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
|
|
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
|
|
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
|
|
Jiang Xin reported possible typos in po/id.po, all of them are mismatch
variable names. Fix them.
Reported-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
|
|
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
|
|
Signed-off-by: Jordi Mas <jmas@softcatala.org>
|
|
* 'daniel' of github.com:git-l10n-pt-PT/git-po:
l10n: pt_PT: cleaning flags mismatch
l10n: pt_PT: cleaning duplicate translations
l10n: pt_PT: update translation tables
l10n: pt_PT: translated git v2.33.0
l10n: pt_PT: update git-po-helper
l10n: pt_PT: remove trailing comments
l10n: pt_PT: translation tables
l10n: pt_PT: add Portuguese translations part 5
l10n: pt_PT: add Portuguese translations part 4
|
|
Signed-off-by: Junio C Hamano <gitster@pobox.com>
|
|
Earlier "git log -m" was changed to always produce patch output,
which would break existing scripts, which has been reverted.
* jn/log-m-does-not-imply-p:
Revert 'diff-merges: let "-m" imply "-p"'
|
|
Build fix.
* cb/many-alternate-optim-fixup:
object-file: use unsigned arithmetic with bit mask
object-store: avoid extra ';' from KHASH_INIT
oidtree: avoid nested struct oidtree_node
|
|
33f379eee6 (make object_directory.loose_objects_subdir_seen a bitmap,
2021-07-07) replaced a wasteful 256-byte array with a 32-byte array
and bit operations. The mask calculation shifts a literal 1 of type
int left by anything between 0 and 31. UndefinedBehaviorSanitizer
doesn't like that and reports:
object-file.c:2477:18: runtime error: left shift of 1 by 31 places cannot be represented in type 'int'
Make sure to use an unsigned 1 instead to avoid the issue.
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
|
|
* corrected git flags mismatch
Signed-off-by: Daniel Santos <hello@brighterdan.com>
|
|
* cleaning duplicate incorrect translations part 1
Signed-off-by: Daniel Santos <hello@brighterdan.com>
|
|
* update translation tables
Signed-off-by: Daniel Santos <hello@brighterdan.com>
|
|
* translated new entries of git v2.33.0
Signed-off-by: Daniel Santos <hello@brighterdan.com>
|