我不断收到相同类型的错误消息,我已经尽力摆脱它们。消息如下,只有模块可以随时变化:
ruby 5740 child_info_fork::abort: address space needed by 'date_core.so' (0x600000) is already occupied
尝试运行Rails时会出现这些消息,例如“rails console”。 我正在运行以下环境:
我已采取以下步骤尝试解决此问题:
所有修复尝试都是徒劳的。有时,“rebase -si | grep'*'”会很干净。任何运行“rails console”或类似命令的尝试都会导致地址空间占用消息。随后“rebase -si”将再次显示冲突。 我一直试图对Ruby模块运行“peflags”,但我只是“跳过因为无法打开”错误消息。文件权限和ACL都显示正确的权限。无论是否使用管理员,都会发生同样的错误。
这非常令人沮丧。我想修复我目前的环境,但我正在考虑转移到MSYS或SFU,但我不知道其中任何一个都是不错的选择。我也在考虑使用原生UNIX,但是当我到达它时,我会跳下悬崖。
目前,有没有人为我解决此特定错误?谢谢......
答案 0 :(得分:0)
我使用procexp监视“rails console”执行。 Bash正在调用cmd.exe来运行rails.bat文件。 Cmd.exe以ASLR模式运行。使用Microsoft EMET 3.0关闭bash和cmd的强制ASLR和自下而上的ASLR。 Cmd.exe仍以ASLR模式运行。它必须以这种方式编译。
更新注册表以将HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ MoveImages设置为0,-1然后1. 0导致系统问题。 -1没有效果。 1,这应该是默认的,只要EMET变更到位就有所帮助。但是,由于地址空间占用最终会再次发生,因此它是不可靠的。
决定尝试安装一个命令处理器,该命令处理器不需要ASLR或允许我使用PE标志禁用它。我安装了TCC / LE并尝试让Cygwin Bash使用它来处理.bat文件。我尝试使用路径变量,COMSPEC变量并更改为注册表中的batfile和cmdfile都无效。 Cygwin Bash必须要么硬编码,要么有一些非显而易见的控制。
我的解决方法是更换我的环境。我知道我最终将迁移到某些Unix,但是现在我转换为MinGW / MSYS和RubyStack。我想要做的就是为今天运行一个稳定的RoR(Ruby on Rails)环境。我没有看到使用Cygwin和Windows 7 Ultimate发生这种情况。我一直遇到太多问题,这个问题非常非常棘手。感谢...