【问题标题】:Django South Seg FaultDjango South Seg 故障
【发布时间】:2013-10-01 23:21:10
【问题描述】:

我刚刚从 Ubuntu 12.04 更新到 13.04,我在迁移一些过去可以工作的代码时遇到了问题。谷歌搜索并没有发现任何明显相关的东西,除了一些晦涩的 R 引用,虽然我的项目确实使用了 R,但我不希望它会在迁移中出现。我以前从未处理过调试段错误,更不用说在 3rd 方代码中了。我应该如何进行?

(project)ben@Watt:~/Projects/project/project$ python project/manage.py migrate
Error: 'rho' must be an environment not NULL: detected in C-level eval
Segmentation fault (core dumped)

编辑:它看起来像 rpy2 的问题,使用下面答案中的 ltrace 找到。仍然想知道迁移是如何出现的。

EDIT2:我的 R 版本已经更新,超出了 Rpy2 的喜好。恢复固定的东西。这在 ./manage.py migrate 中是如何出现的对我来说很神秘。

【问题讨论】:

    标签: django segmentation-fault django-south


    【解决方案1】:

    我将从使用strace 开始,因为它已经安装在许多系统上。这可能使您能够根据所做的系统调用来缩小当前正在执行的模块的范围。例如

    $ strace -o ~/tmp/strace.log -f python project/manage.py migrate
    

    或者,安装ltrace 并查看调用顺序。

    $ sudo apt-get install ltrace
    $ ltrace python project/manage.py migrate
    

    如果做不到这一点,由于核心已被转储,您可以在核心上使用 gdb 来查看问题发生的确切位置

    $ gdb core
    

    使用bt 等命令显示堆栈跟踪。为了使这更容易,您可能需要找到具有可用调试符号的可执行文件/库。

    【讨论】:

    • 太棒了!不知道这是否能解决问题,但学到了一些新东西来帮助更好地调试。谢谢!!
    【解决方案2】:

    在 R-3.0.2 中,R 的 C-API 发生了变化。升级你的 rpy2 版本。 详情请见issue #150 on bitbucket

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多