Cygwin报错 child_info_fork::abort: XXX.dll: Loaded to different address: parent(XXX) != child(XXX)

目录

报错现象

错误原因

解决方法

关闭杀毒软件

Rebase库文件


报错现象

Cygwin已经在电脑上常驻了一段时间,安装了不少库文件和应用。在某次安装新应用之后,运行该应用时出现类似如下错误:

[main] make 7780 child_info_fork::abort: C:\cygwin\bin\cygiconv-2.dll: Loaded to different address: parent(0x440000) != child(0x5F0000)
make: fork: Resource temporarily unavailable

错误原因

1️⃣后台有杀毒软件在运行时,杀毒软件的库可能会被加载到Cygwin进程的地址空间,从而产生冲突并给出这个错误(参考来源)。

2️⃣当Cygwin上安装的库过多时,在运行程序时可能会有多个库被加载到重叠的地址段,从而产生冲突并给出这个错误。

DLLs on Windows need to be loaded into memory at non-conflicting base addresses. rebaseall is a cygwin utility that scans all the libraries currently installed and sets each to request a different base address so that none will conflict.

参考来源

解决方法

关闭杀毒软件

如果系统有杀毒软件正在运行,先关闭之,再重启Cygwin,观察是否恢复正常。

Rebase库文件

如果不是杀毒软件的问题,或者关闭杀毒软件后仍然报错,我们可以使用Cygwin提供的rebase-trigger工具来进行Cygwin库文件的rebase。进行rebase时,Cygwin会重新指定其每个库的加载位置,以确保它们在加载时不会再重叠(参考来源)。rebase的操作步骤如下:

1️⃣在Cygwin中执行:

rebase-trigger full

2️⃣关闭所有Cygwin进程。

3️⃣打开Cygwin的安装程序setup-x86_64.exe(64位Cygwin)或setup-x86.exe(32位Cygwin),一直前进到最后一步(安装程序包那一步),进度条走完后即完成rebase。

成功rebase后,再次打开Cygwin里的相关应用,现在应该不再报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值