Re: [PATCH v2] git tag --contains : avoid stack overflow
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 23, 2014, 20:48 UTC
- Message-ID
- <xmqqk3afydq2.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <20140423191628.GA20596@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 11 quoted lines
> On Wed, Apr 23, 2014 at 12:12:14PM -0700, Junio C Hamano wrote: > >> > +ulimit_stack="ulimit -s 64" >> > +test_lazy_prereq ULIMIT 'bash -c "'"$ulimit_stack"'"' >> >> With this implementaion, ULIMIT implies bash, and we use bash that >> appears on user's PATH that may not be the one the user chose to run >> git with. Can't we fix both of them by using $SHELL_PATH? > > I don't think so. The point is that we _must_ use bash here, not any > POSIX shell.
Sorry, but I do not understand. Isn't what you want "any POSIX shell with 'ulimit -s 64' supported"?
$ dash -c 'ulimit -s && ulimit -s 64 && ulimit -s'
8192
64Show 15 quoted lines
> We want to run "some bash" if we can. We may pick a bash on the user's
> PATH that is not what they put into $SHELL_PATH, but that should be
> relatively rare. And the consequence is that either that bash works fine
> and we run the test, or it does not, and we skip the test.
>
>> How about doing it along this line instead?
>>
>> run_with_limited_stack () {
>> "$SHELL_PATH" -c "ulimit -s 64 && $*"
>> }
>>
>> test_lazy_prereq ULIMIT "run_with_limited_stack true"
>
> That's a much more direct test. I like it (aside from the $SHELL_PATH
> thing as described above).Still puzzled.