【问题标题】:Memory corruption in pythonpython中的内存损坏
【发布时间】:2014-01-29 12:59:57
【问题描述】:

我正在使用 pyenv python 版本 2.7.5 在 python-pyramid 上部署我的项目。现在在处理过程中出现内存泄漏错误。这个错误是第一次出现。在其他系统python 2.7.3的服务器上,不会出现此错误。

我看到其他帖子建议使用 valgrind 之类的工具捕获内存转储。但我不确定如何将它与 python-pyramid 一起使用。

内存转储非常大,stackoverflow 不允许我在这里发帖。所以它在http://pastebin.com/atUW89eX中可用

有什么建议吗?

更新:

  1. 我们已经使用apt-get安装了python-uno,但是我们需要pyenv下python2.7.5下的uno。所以我们将 uno.py 和 unohelper.py 从 Python2.7.3 复制到 Python2.7.5。
  2. 根据this libreoffice 支持Python2.7.5。

【问题讨论】:

    标签: python memory pyramid


    【解决方案1】:

    pyuno 有几个潜在的问题:

    1. python 版本错误。您必须使用与 soffice 提供的完全相同的 python 点版本。您还必须使用相同的 unicode 选项(即 UCS4 或 UCS2)进行编译。

    2. pyuno 接口不是非常健壮。您只能传递 字节流 而不能传递 unicode 流

    那些是大的。您还需要基础知识,例如拥有正确的 LD_LIBRARY_PATH 和 PYTHONPATH。

    【讨论】:

    • 我已经更新了问题,并且从链接中我相信当前安装的 python-uno 版本适用于 Python2.7.3 和 Python2.7.5。我说的对吗?
    • @cisnik 不,它必须是精确的点版本。我不能保证仅凭这一点就能解决问题,但有必要将其作为错误来源之一加以消除。您还应该发布导致此问题的代码,以防类型不匹配。
    【解决方案2】:

    错误发生在对 pyuno 的调用中,它封装了 libreoffice 的本机代码。

    我假设您通过 pyuno/libreoffice 创建/修改文档。恕我直言,您应该逐条调试程序语句,其中涉及 pyuno(例如,通过注释掉语句并运行程序)。这个或获取带有调试信息的 libreoffice 库。

    从签名来看,我的猜测是你传递了一个应该是 unicode 的字符串对象,但它不是。

    【讨论】:

    • 问题更可能是传递的对象是 unicode,而不是字节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多