3

应用程序上下文

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

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

Fatal Python error: XXX block stack underflow

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

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

我试过的

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

正如我所说,没有关于错误的回溯或信息。

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

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

问题

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

4

1 回答 1

4

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

如果您无法发布让我们重现问题的方法,您也可以尝试在 Python 源代码中的 PyFrame_BlockPop() 中编辑 Objects/frameobject.c,以在崩溃前显示更多信息。至少_PyObject_Dump(f); _PyObject_Dump(f->f_code);在定位错误所在方面很有用。

于 2012-12-07T02:40:30.170 回答