1

我不断收到相同类型的错误消息,并且我已经尽我所能摆脱它们。消息如下,只有模块有时会发生变化:

ruby 5740 child_info_fork::abort: address space needed by 'date_core.so' (0x600000) is already occupied

这些消息在尝试运行 Rails 时会在不同时间出现,例如“rails 控制台”。我正在运行以下环境:

  • Windows 7 旗舰版 64 位
  • Cygwin Net 使用 setup 2.774(从 Internet 镜像安装)
  • 红宝石 1.9.3p392
  • 导轨 3.2.11

我已采取以下步骤尝试解决此问题:

  • 删除所有 BLODA 并重新启动,包括 Norton 360 和 Malwarebytes。(BLODA 是狡猾的应用程序的大列表。)
  • 删除并重新安装 Cygwin。
  • 执行“rvm implode”并重建 RVM 和 Ruby on Rails 环境。
  • 使用 CMD 和 ASH 运行“peflagsall”和“rebaseall”。跑“rubyrebase”。重新启动。
  • 使用 FIND 构建所有 *.so 和 *.dll 文件的文件。运行“rebase -T”。重新启动。这也是使用“-b 0x77000000”开关完成的。
  • 使用相同的文件创建“to_peflags”脚本,针对每个单独的文件发出 peflags。重新启动。

所有的修复尝试都是徒劳的。有时,“rebase -si |grep '*'”会很干净。任何运行“rails 控制台”或类似命令的尝试都会导致地址空间占用消息。随后的“rebase -si”将再次显示冲突。我一直在尝试对 Ruby 模块运行“peflags”,但我只得到“跳过,因为无法打开”错误消息。文件权限和 ACL 都显示正确的权限。无论是否使用 Administrator,都会发生同样的错误。

这很令人沮丧。我想修复我当前的环境,但我正在考虑迁移到 MSYS 或 SFU,但我不知道这是否是不错的选择。我也在考虑使用原生 UNIX,但当我得到它时,我会跳下悬崖。

现在,有没有人为我解决这个特定的错误?谢谢…

4

1 回答 1

0

我使用 procexp 来监视“rails 控制台”的执行。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)环境在今天运行。我没有看到在 Windows 7 Ultimate 中使用 Cygwin 会发生这种情况。我一直遇到太多问题,而这个问题非常非常难以破解。谢谢……</p>

于 2013-04-02T18:21:08.957 回答