什么可能导致python中的Block堆栈下溢?

时间:2012-12-07 02:28:03

标签: python python-2.7 web webob stackunderflow

应用程序上下文

我们正在使用“单独”WebOb开发实验性Web框架。我们正在处理并发请求,它基本上是一个非常简单的WebOb集成。我们在webfaction.com上托管我们的应用程序

问题是我们的日志中出现了这个致命的Python错误:

Fatal Python error: XXX block stack underflow

没有其他追溯或信息。它使我们的应用程序崩溃(它会在几分钟后自动重启)。我们从未在开发中遇到过这个问题。

编辑:我已经检查过我的python应用程序内存太高了,可能是一个相关的问题

我尝试了什么

问题是,当我尝试交叉引用Access日志时,没有任何内容与该访问时间相对应。

正如我所说,错误没有追溯或信息。

所以,我首先搜索了Python中的块堆栈下溢,我发现这篇非常有趣的文章:http://tech.blog.aknin.name/2010/07/22/pythons-innards-interpreter-stacks/解释了 块下溢的情况。

编辑:我也尝试删除所有.pyc并重新启动服务器。没有结果

问题

所以,这是我的问题: 什么可能导致编译器中的块堆栈下溢?什么“类型”的代码可能会导致这种情况?

1 个答案:

答案 0 :(得分:4)

首先,尝试删除所有.pyc个文件(如果有的话.pyo),然后重新启动服务器。如果它没有帮助,请将问题报告给http://bugs.python.org/ ---它看起来像是一个Python错误。我能想到的唯一方法就是使用晦涩的技巧来生成自定义字节码序列。

如果您无法为我们发布重现问题的方法,您还可以尝试在Python源代码中编辑Objects / frameobject.c,在PyFrame_BlockPop()中,以便在崩溃之前显示更多信息。至少_PyObject_Dump(f); _PyObject_Dump(f->f_code);可用于查找错误的位置。

相关问题