Re: [PATCH v9 00/19] index-helper/watchman
- From
Ramsay Jones <ramsay@ramsayjones.plus.com>
- Date
- May 9, 2016, 23:46 UTC
- Message-ID
- <5731216A.7080808@ramsayjones.plus.com>
- In-Reply-To
- <1462835573.24478.53.camel@twopensource.com>
On 10/05/16 00:12, David Turner wrote:
Show 66 quoted lines
> On Mon, 2016-05-09 at 15:32 -0700, Junio C Hamano wrote:
>> Junio C Hamano <gitster@pobox.com> writes:
>>
>>> David Turner <dturner@twopensource.com> writes:
>>>
>>>> On Mon, 2016-05-09 at 14:40 -0700, Junio C Hamano wrote:
>>>>> Hmmm, I seem to be getting
>>>>>
>>>>> $ cat t/trash*7900*/err
>>>>> fatal: Already running
>>>>>
>>>>> after running t7900 and it fails at #5, after applying
>>>>> "index-helper: optionally automatically run"
>>
>> The symptom looks pretty similar to $gmane/293461 reported earlier.
>> Here is how "t7900-index-helper.sh -i -v -x -d" ends.
>>
>>
>> expecting success:
>> test_when_finished "git index-helper --kill" &&
>> rm -f .git/index-helper.sock &&
>> git status &&
>> test_path_is_missing .git/index-helper.sock &&
>> test_config indexhelper.autorun true &&
>> git status &&
>> test -S .git/index-helper.sock &&
>> git status 2>err &&
>> test -S .git/index-helper.sock &&
>> test_must_be_empty err &&
>> git index-helper --kill &&
>> test_config indexhelper.autorun false &&
>> git status &&
>> test_path_is_missing .git/index-helper.sock
>>
>> + test_when_finished git index-helper --kill
>> + test 0 = 0
>> + test_cleanup={ git index-helper --kill
>> } && (exit "$eval_ret"); eval_ret=$?; :
>> + rm -f .git/index-helper.sock
>> + git status
>> On branch master
>> Untracked files:
>> (use "git add <file>..." to include in what will be committed)
>>
>> err
>>
>> nothing added to commit but untracked files present (use "git add" to
>> track)
>> + test_path_is_missing .git/index-helper.sock
>> + test -e .git/index-helper.sock
>> + test_config indexhelper.autorun true
>> + config_dir=
>> + test indexhelper.autorun = -C
>> + test_when_finished test_unconfig 'indexhelper.autorun'
>> + test 0 = 0
>> + test_cleanup={ test_unconfig 'indexhelper.autorun'
>> } && (exit "$eval_ret"); eval_ret=$?; { git index
>> -helper --kill
>> } && (exit "$eval_ret"); eval_ret=$?; :
>> + git config indexhelper.autorun true
>> + git status
>> error: last command exited with $?=141
>
> I think that's a SIGPIPE on the first git status. Weird, since I just
> added sigpipe-avoidance code (in v8). Does anyone have any idea why
> the sigchain stuff isn't doing what I think it is?Sorry for a late report (I've been a bit busy last couple of days), but I've been seeing exactly the same on v8 of this series.
Note that the above 'git status' is actually the second git-status in the test.
I haven't been able to debug it too much, but I can tell you that it is not failing at exactly the same place every time (so it may be time sensitive). However, it often fails in poke_and_wait_for_reply() at the first packet_flush() (which in turn calls write_or_die() which calls check_pipe() with an EPIPE(32)). At other times it fails when issuing a flush after a refresh packet. For example, on one run with packet tracing enabled, I got this for the trace:
trace: built-in: git 'status' packet: git> poke 3221 packet: git> 0000 packet: git< OK packet: git> refresh packet: git> 0000
So, its getting the EPIPE for the refresh in this case, even though the index-helper is still running, the unix socket is in .git/ (and so is a shm-* file BTW).
I didn't get any further than that I'm afraid.
ATB, Ramsay Jones