致命错误:无法访问<link> getaddrinfo()线程启动失败

25
当我输入:git push origin master时,
错误:
fatal: unable to access 'https://github.com/<github-username>/<repository-name>.git/': getaddrinfo() thread failed to start

我该怎么办?
这是在Windows机器上使用的git。

打开一个新的终端,输入 git config --global --unset-all https.proxy,然后再试一次。 - Xaqron
同 https://stackoverflow.com/q/59517290/720999 - kostix
我们在谈论在Windows上使用Git,是吗? - kostix
是的,我们在谈论如何在Windows上使用git。 - Tanishq Vyas
建议的方法没有起作用。所以我创建了一个新的Github账户,添加了SSH密钥,现在它运行良好。虽然任何关于之前的线索都将不胜感激。 - Tanishq Vyas
1
这回答解决了您的问题吗?使用git clone命令克隆时遇到访问被拒绝的问题 - Jason Aller
7个回答

13

我遇到了同样的问题,尝试了多种解决方案,直到我发现在我的情况下是防火墙导致的。我的防火墙是“Free Firewall”,我注意到即使授权软件和连接,也无法连接远程仓库。我将其禁用并没有解决问题,只有当我卸载它后才能正常使用Git。


谢谢你指出防火墙的问题 - 我正在使用Windows Defender防火墙,而我的机器在域上的设置经常导致防火墙相关问题。在这种情况下(以及许多其他情况下),重新启动Windows Defender防火墙完全解决了问题。 - centralscru
当我在Windows中玩弄Windows Defender防火墙服务的启动类型时,我遇到了这个问题。我发现,如果防火墙配置为手动启动,它会出现这个问题。如果配置为自动启动,则问题消失了。此启动值可以通过注册表进行调整(无法通过services.msc进行配置)。 - Ryan C.
1
我突然在长时间使用git命令后遇到了fatal: unable to access <link> getaddrinfo() thread failed to start错误。这恰好与另一个正在进行大量I/O操作的进程中出现的一些网络级别错误相吻合。我的愚蠢简单的解决方法是拔掉并重新插入以太网电缆。这行得通 :) - alexandre iolov
我必须在这里补充一下,@alexandreiolov的解决方案——重新插拔以太网电缆对我也起了作用。 - D.K

5
在我的电脑上出现了相同的问题(git 版本 2.28.0.windows.1)。这个问题似乎与 HTTP 请求的 DNS 解析有关:
这是我最初的远程 URL:
git remote set-url origin http://<FQDN>:<http_port>/<repository>.git

与问题中的结果相同:
$ git pull
fatal: unable to access 'http://<FQDN>:<http_port>/<repository>.git/': getaddrinfo() thread failed to start

将URL更改为已解析的IP地址时:

$ ahost <FQDN>
<FQDN>                               <IP>

$ git remote set-url origin http://<IP>:<http_port>/<repository>.git

Git 连接没有问题:

$ git pull
Already up to date.

此外,当使用SSH而非HTTP时,分辨率没有任何问题:
$ git remote set-url origin ssh://<username>@<FQDN>:<ssh_port>/<repository>.git
$ git pull
Already up to date.

在我的MINGW64环境中,Curl也无法工作:

$ ahost www.google.com
www.google.com                          172.217.2.100
    
$ adig www.google.com
id: 64322
flags: qr rd ra
opcode: QUERY
rcode: NOERROR
Questions:
        www.google.com .                A
Answers:
        www.google.com .        49      A       172.217.2.100
NS records:
Additional records:


$ curl www.google.com -v
* getaddrinfo() thread failed to start

* Couldn't resolve host 'www.google.com'
* Closing connection 0
curl: (6) getaddrinfo() thread failed to start

3

如果系统中安装了任何防病毒软件或防火墙,请关闭Git访问或彻底卸载并重新启动。我遇到了相同的问题,卸载了防火墙后问题得到解决。


2
欢迎来到 Stack Overflow。这个答案提供了什么是已被接受的答案中没有的内容? - Jason Aller
1
如果您正在使用防火墙,请确保允许Git程序。 - Satish Saini

1

我在一个构建Docker镜像的Gitlab CI服务器上的作业中突然遇到了这个问题。

error: failed retrieving file 'core.db' from geo.mirror.pkgbuild.com : getaddrinfo() thread failed to start

在大量挖掘后(最终在 CI 任务中运行 strace docker build),我发现问题是由被阻止的系统调用 clone3 导致的。
clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7f6cb634c990, parent_tid=0x7f6cb634c990, exit_signal=0, stack=0x7f6cb5b4c000, stack_size=0x7fff80, tls=0x7f6cb634c6c0}, 88) = -1 EPERM (Operation not permitted)

稍微搜索一下,我发现了以下内容:

Docker为所有未知于Docker的系统调用注入SCMP_ACT_ERRNO(EPERM)规则。因此,当glibc尝试调用clone3()时,内核根据Docker的seccomp配置引发EPERM(“操作不允许”)错误。

我发现在20.10.10之前的Docker镜像受到影响,而我的Gitlab runner配置使用的是20.10.8 - 所以在我的情况下解决方案是重新配置runner以使用20.10.10镜像。


哦,这太愚蠢了,但也是正确的。我在WSL2上运行Docker,它一直无法推送分支。我停止了WSL2上的服务,突然一切都正常工作了。 然而,在我的Docker实例上运行strace却显示了一个与你的错误不同的错误: epoll_ctl(4, EPOLL_CTL_ADD, 3, {events=EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, data={u32=3625202520, u64=139684551603032}}) = -1 EPERM (操作不允许) - Truesky

1
这个问题在我运行一个 VPN 服务并通过在 Windows 任务管理器中完成其任务时得到解决。

1
$ git remote set-url origin http://<IP>:<http_port>/<repository>.git
or
$ git remote set-url origin ssh://<username>@<FQDN>:<ssh_port>/<repository>.git

我的问题通过以上方法得以解决!!

0
fatal: unable to access <link> getaddrinfo() thread failed to start

这个错误的提示意味着你的电脑防火墙不允许进行这种操作,所以只需从系统和防病毒软件中禁用它,然后就可以正常使用 git了。希望对你有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接