Re: [BUG] Halt during fetch on MacOS
- From
- Conley Owens <cco3@android.com>
- Date
- Mar 5, 2014, 21:56 UTC
- Message-ID
- <CAFFUb6ViYitJC1sjL_nyWY1RHuJKURfcZ+_5Zk2kr+suh+txZg@mail.gmail.com>
- In-Reply-To
- <CAFFUb6X455R4OD5FKnVFHFmvTyRqtV300bc=a8Xs03agM+=uLQ@mail.gmail.com>
On Fri, Feb 28, 2014 at 3:26 PM, Conley Owens <cco3@android.com> wrote:
Show 6 quoted lines
> $ git --version # This is just the git from MacPorts > git version 1.8.5.5 > $ sw_vers > ProductName: Mac OS X > ProductVersion: 10.8.5 > BuildVersion: 12F45
OK, I've tried using my own build from master, and I still get the same results.
I've done a little more investigation and discovered it always hangs at: `atexit(notify_parent);` in `run-command.c:start_command` when running: trace: run_command: 'git-remote-https' 'aosp' 'https://android.googlesource.com/platform/external/tinyxml2'
Could this have to do with the atexit implementation? (eg. limit on the number of functions that can be registered, etc)
$ cc -v Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn) Target: x86_64-apple-darwin12.5.0 Thread model: posix
Show 58 quoted lines
>
> test.sh
> """""""""""""""""""""""""""""""""""""
> #!/bin/bash
> rungit() {
> mkdir $1
> GIT_DIR=$1 git init --bare
> echo '[remote "aosp"]' > $1/config
> echo ' url =
> https://android.googlesource.com/platform/external/tinyxml2' >>
> $1/config
> GIT_DIR=$1 git fetch aosp +refs/heads/master:refs/remotes/aosp/master
> rm -rf $1
> }
>
> for i in $(seq 1 100)
> do
> rungit testdir$i &
> done
> """""""""""""""""""""""""""""""""""""""
> $ ./test.sh # Warning! This script fetches ~40MB of data
>
> When everything cools, you can see that there are some fetches hanging
> (typically).
> $ ps | grep 'git fetch'
> ...
> 63310 ttys004 0:00.01 git fetch aosp
> +refs/heads/master:refs/remotes/aosp/master
> 63314 ttys004 0:00.01 git fetch aosp
> +refs/heads/master:refs/remotes/aosp/master
> 63319 ttys004 0:00.01 git fetch aosp
> +refs/heads/master:refs/remotes/aosp/master
> 63407 ttys004 0:00.00 git fetch aosp
> +refs/heads/master:refs/remotes/aosp/master
> 63414 ttys004 0:00.00 git fetch aosp
> +refs/heads/master:refs/remotes/aosp/master
> 63420 ttys004 0:00.00 git fetch aosp
> +refs/heads/master:refs/remotes/aosp/master
> ...
>
> You can look at the parent process of each and see that one half
> spawned the other half, or you can look at the environment variables
> for each to see that there are two processes operating in the same
> directory for each directory where there's an issue.
> $ echo "$(for pid in $(ps | grep 'git fetch' | grep -o '^[0-9]*'); do
> ps -p $pid -wwwE | grep 'GIT_DIR=[^ ]*' -o; done)" | sort
> GIT_DIR=testdir14
> GIT_DIR=testdir14
> GIT_DIR=testdir32
> GIT_DIR=testdir32
> GIT_DIR=testdir47
> GIT_DIR=testdir47
>
> I've searched through the mailing list, but this doesn't seem to be a
> known issue. I've only seen this occur on macs (and with a good deal
> of regularity). It doesn't occur on my Ubuntu box.
>
> ~cco3