Derrick Stolee [off-list ref] writes:
On 5/25/2021 2:32 AM, Junio C Hamano wrote:
quoted
Derrick Stolee [off-list ref] writes:
quoted
quoted
So we silently convert -1 to 2^64-1, and call it a day.
That works for me. I'll send a v2 with that tomorrow unless someone
presents a better option.
I'll queue with this tweak for tonight's integration run.
...
Thank you for proactively modifying the patch. This works
for me. I didn't realize that this was affecting other
contributors [1] until I woke up this morning.
[1] https://lore.kernel.org/git/036b01d750ed$642b75c0$2c826140$@nexbridge.com/
Well, not so well X-<. It seems that some builds are not happy with
this change. See https://github.com/git/git/actions/runs/876229761
specifically these two:
https://github.com/git/git/runs/2669177395?check_suite_focus=true#step:7:3549
https://github.com/git/git/runs/2669080101?check_suite_focus=true#step:6:988
I suspect that it has something to do with 32-bit platforms?
Thanks.
On Wed, May 26, 2021 at 05:46:16AM +0900, Junio C Hamano wrote:
Well, not so well X-<. It seems that some builds are not happy with
this change. See https://github.com/git/git/actions/runs/876229761
specifically these two:
https://github.com/git/git/runs/2669177395?check_suite_focus=true#step:7:3549
https://github.com/git/git/runs/2669080101?check_suite_focus=true#step:6:988
I suspect that it has something to do with 32-bit platforms?
Thanks. Of course, redirecting stderr into a file and halting after we
get a non-zero exit code makes this pretty hard to debug from that
output alone, but this is pretty easily reproducible on a 32-bit Docker
image:
root@99cfe0d56673:/git-master# getconf LONG_BIT
32
root@99cfe0d56673:/git-master# GIT_PROGRESS_DELAY=-1 ./bin-wrappers/git status
fatal: failed to parse GIT_PROGRESS_DELAY
Looking more closely in a debugger shows that we're failing because of
this check in 'config.c:git_parse_unsigned()':
if (unsigned_mult_overflows(factor, val) ||
factor * val > max) {
errno = ERANGE;
return 0;
}
unsigned_mult_overflows() doesn't trigger regardless of architecture,
since even though val is large, factor is 1, so factor * val == val. But
val is much larger than max, so we fail there. 'max' is just
'maximum_unsigned_value_of_type(long)', or 2^32-1, while val is 2^64-1.
Thanks,
Taylor