进程以退出代码139结束(由信号11中断:SIGSEGV)

时间:2018-03-21 19:14:26

标签: python python-3.5 sigsegv linuxmint

我正在尝试执行Python script,但我收到以下错误:

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

可以找到完整的错误消息here

我在Linux Mint 18.1 Serena OS上使用python 3.5.2

有人能告诉我为什么会这样,我该如何解决?

11 个答案:

答案 0 :(得分:7)

SIGSEGV信号表示“segmentation violation”或“段错误”。或多或少,这相当于读取或写入未在过程中映射的内存地址。

这表示您的计划中存在错误。在Python程序中,这可能是解释器中的错误,也可能是正在使用的扩展模块中的错误(后者是最常见的原因)。

要解决此问题,您有几种选择。一种选择是生成一个最小的,自包含的完整示例,该示例复制问题,然后将其作为错误报告提交给它使用的扩展模块的维护者。

另一种选择是尝试自己追踪原因。 gdb是这种努力的宝贵工具,Python的调试版本和所有正在使用的扩展模块也是如此。

安装gdb后,可以使用它来运行Python程序:

gdb --args python <more args if you want>

然后使用gdb命令来追踪问题。如果您使用run,那么您的程序将一直运行,直到它崩溃并且您将有机会使用其他gdb命令检查状态。

答案 1 :(得分:2)

遇到此问题时,我意识到存在一些内存问题。我重新启动PC并解决了问题。

答案 2 :(得分:1)

一段时间后,我发现我正在运行一个新的TensorFlow版本,该版本在较旧的计算机上显示错误。我解决了将TensorFlow版本降级到1.4的问题

答案 3 :(得分:0)

我通过更新python库解决了该问题。就我而言,这是scikit-learn:

pip install -U scikit-learn

答案 4 :(得分:0)

另一个可能的原因(我今天遇到的)是您试图读取/写入一个打开的文件。在这种情况下,只需关闭文件并重新运行脚本即可解决此问题。

答案 5 :(得分:0)

如果您的C程序(例如,使用cpython试图访问超出范围的变量,也可能是这种情况


ctypedef struct ReturnRows:
    double[10] your_value

cdef ReturnRows s_ReturnRows # Allocate memory for the struct
s_ReturnRows.your_value = [0] * 12

将失败

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

答案 6 :(得分:0)

尝试使用pyodbc模块连接到Oracle DB时,我收到相同的错误:

connection = pyodbc.connect()

在以下情况下发生错误:

  • DB连接已在同一python中多次打开 文件
  • 在调试模式下已达到断点 与数据库的连接处于打开状态

可以通过以下方法避免错误消息:

  • 仅打开数据库一次,然后在所有需要的位置重用连接
  • 使用后正确关闭数据库连接

希望,对任何人都有帮助!

答案 7 :(得分:0)

删除python解释器和'venv'文件夹即可解决我的错误。

答案 8 :(得分:0)

11 : SIGSEGV - 当非法访问内存段时会出现此信号。

python中有一个模块名信号,通过它你可以处理这种操作系统信号。

如果你想忽略这个SIGSEGV信号,你可以这样做:

signal.signal(signal.SIGSEGV, signal.SIG_IGN)

但是,忽略该信号可能会导致您的代码出现一些不适当的行为,因此最好使用您定义的处理程序来处理 SIGSEGV 信号,如下所示:

def SIGSEGV_signal_arises(signalNum, stack):
    print(f"{signalNum} : SIGSEGV arises")
    # Your code

signal.signal(signal.SIGSEGV, SIGSEGV_signal_arises) 

答案 9 :(得分:0)

对我来说,我使用 OpenCV 库来应用 SIFT。 在我的代码中,我将 cv2.SIFT() 替换为 cv2.SIFT_create() ,问题就解决了。

答案 10 :(得分:-1)

在其他页面上找到。 解释器:python 3.8

cv2.CascadeClassifier(cv2.data.haarcascades +“ haarcascade_frontalface_default.xml”)

这为我解决了问题。 我使用2.7版本获得了SIGSEGV,将我的python升级到3.8,然后使用OpenCV获得了不同的错误。并在OpenCV 4.0.0 SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set上找到了答案。

但是最终一行代码修复了它。