2014-01-29 167 views
3

我在python-pyramid上部署我的項目,使用pyenv python版本2.7.5。現在在處理過程中,我收到內存泄漏錯誤。這個錯誤是第一次出現。在系統python 2.7.3的其他服務器上,不會發生此錯誤。python中的內存損壞

我已經看到其他職位建議捕獲內存轉儲像valgrind工具。但我不確定如何在python-pyramid中使用它。

內存轉儲非常大,而且stackoverflow不允許我在這裏發佈。所以它可在http://pastebin.com/atUW89eX

有什麼建議嗎?

更新:

  1. 我們使用apt-get的,但我們在pyenv需要下python2.7.5 UNO安裝蟒蛇聯合國辦事處。所以我們將Python2.7.3中的uno.py和unohelper.py複製到Python2.7.5。
  2. 根據this libreoffice支持Python2.7.5。

回答

-1

該錯誤發生在pyuno的調用中,該函數包裝了libreoffice的本機代碼。

我假設你通過pyuno/libreoffice創建/修改文檔。恕我直言,你應該在pyuno涉及的地方通過聲明調試程序聲明(例如,通過註釋聲明和運行程序)。這或獲取libreoffice庫中的調試信息。

從簽名,我的猜測是,你正在傳遞一個應該是unicode的字符串對象,而不是。

+0

這很可能是問題是傳遞的對象是unicode,而不是字節。 – Marcin

0

有幾個潛在的問題與pyuno:

  1. 錯誤Python版本。你必須使用與soffice一樣的Python完全相同的版本。您還必須使用相同的unicode選項(即UCS4或UCS2)進行編譯。

  2. pyuno接口不是非常健壯。您只能通過字節流而不是unicode流

那些是大的。您還需要基礎知識,比如擁有正確的LD_LIBRARY_PATH和PYTHONPATH。

+0

我已經更新了這個問題,並且從鏈接中我相信當前安裝的python-uno版本可以與Python2.7.3和Python2.7.5一起使用。我對麼? – cisnik

+0

@cisnik不,它必須是確切的點版本。我不能保證一個人就能解決問題,但有必要消除這種錯誤的根源之一。您還應該發佈導致此問題的代碼,以防類型不匹配。 – Marcin