我正在用Python实现Kosaraju的强连接组件(SCC)图搜索算法。
这个程序在小数据集上运行得很好,但当我在一个超大图形(超过800000个节点)上运行它时,它会显示“分段错误”。
原因可能是什么?非常感谢。
附加信息:首先,我在超大数据集中运行时出现了这个错误:
"RuntimeError: maximum recursion depth exceeded in cmp"
然后我重置递归限制使用
sys.setrecursionlimit(50000)
但是有一个“分割错误”
相信我,这不是一个无限循环,它在相对较小的数据上正确运行。有可能是程序耗尽了资源?
分割故障是一种常见的故障,有许多可能的原因:
我知道您已经解决了您的问题,但对于阅读本文的其他人来说,答案是:您必须增加操作系统为python进程分配的堆栈。
这样做的方法,是操作系统依赖。在linux中,您可以使用命令uLimited-s
检查您的当前值,并且您可以使用uLimited-s增加它
尝试将上一个值加倍,如果不起作用,则继续加倍,直到找到一个起作用或内存不足的值。
当python扩展(用C编写)试图访问无法访问的内存时,就会发生这种情况。
您可以通过以下方式跟踪它。
>
gdb python
(gdb) run /path/to/script.py
## wait for segfault ##
(gdb) backtrace
## stack trace of the c code
我在C中实现了一个简单的队列,但是当我试图在退出队列后访问Q. ex时,它会出现分段错误(例如,请参阅int main())。 更准确地说,问题发生在我- 将单个元素排队 把它排出来 使一个或多个元素排队 尝试访问Q.front 然而,程序没有给出分段错误或任何错误,当我- 使多个元素排队 这是我的完整程序-
问题内容: 根据手册页: 返回值 成功完成后,将返回0。否则,将返回并且设置全局变量以指示错误。在任何一种情况下,对该流的任何进一步访问(包括对的另一个调用)都会导致未定义的行为。 错误 底层的文件描述符无效。 该函数也可能会失败,并设置为例程指定的任何错误,或者。 当然应该失败,但是我希望它以正常方式返回,而不是直接因分段错误而死亡。是否有任何这种行为的原因? 提前致谢。 更新:我将把代码放在这
我正在尝试用Objective-C编写一个波阵面OBJ文件查看器,它能够从文件中加载网格/材质/着色器。我已经为着色器和着色器程序创建了类,我正在尝试创建一个OpenGL着色器程序对象,作为着色器程序类的init方法的一部分: 但是,调用glCreateProgram会导致EXC_BAD_访问,调用[SRShader compile]也会导致EXC_BAD_访问,而[SRShader compil
问题内容: 据我了解,python模块永远不会导入两次,即该模块中的代码仅在首次导入时才执行。随后的import语句只需将模块添加到导入范围即可。 我有一个名为“ TiledConvC3D.py”的模块,但似乎已多次导入。我使用pdb在该模块的代码顶部打印堆栈。 这是从第一次执行模块开始的堆栈跟踪的结尾: 它将继续执行多次。但是,第二次调用的完整堆栈跟踪不会显示对的任何调用,因此不应执行这些执行:
问题内容: 遇到一个错误地使用 而不是 在其代码中的人,它没有显示为编译错误。 是因为 是相同的 ? 问题答案: 没有编译错误,因为它是有效的(尽管相当无用) 一元运算符 ,其使用方式与以下方式相同: Java语言规范中的相关部分是Unary Plus运算符+(第15.15.3节) 。它指定调用一元运算会导致操作数的一元数值提升(第5.6.1节)。这意味着: * 如果操作数是编译时类型的,,,或,
问题内容: 我在搜索我的网站上具有自动完成/提前输入功能。我看到他们有时是一个例外。我们正在使用代理服务器。 引起原因:java.net.ConnectException:连接被拒绝 这是我的编码方式 谁能告诉我为什么我只在某个时候得到这个例外?是否可能是由于从Android应用程序发出搜索请求而导致此异常,因为我们的网站不支持从android应用程序发出请求 问题答案: 当您尝试打开与IP地址/