代码之家  ›  专栏  ›  技术社区  ›  Andre

过程结束,退出代码139(被信号11:SIGSEGV中断)

  •  57
  • Andre  · 技术社区  · 6 年前

    我想执行一个 Python script ,但我得到以下错误:

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

    我正在Linux Mint 18.1 Serena操作系统上使用python 3.5.2

    有人能告诉我为什么会发生这种情况,我该如何解决?

    16 回复  |  直到 5 年前
        1
  •  54
  •   Jean-Paul Calderone    6 年前

    SIGSEGV信号指示“ segmentation violation 或“segfault”。这或多或少相当于对进程中未映射的内存地址的读取或写入。

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

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

    另一种选择是自己去寻找原因。 gdb 在这方面是一个很有价值的工具,Python和所有正在使用的扩展模块的调试构建也是如此。

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

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

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

        2
  •  18
  •   Josh Friedlander    5 年前

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

        3
  •  10
  •   Andre    6 年前

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

        4
  •  6
  •   madogan    6 年前

    当我遇到这个问题时,我意识到存在一些内存问题。我重新启动电脑并解决了它。

        5
  •  5
  •   gies0r    5 年前

    如果您的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
  •  3
  •   Younes Belouche    3 年前

    对我来说,我使用OpenCV库来应用SIFT。 在我的代码中,我替换了cv2。SIFT()至cv2。SIFT\u create(),问题就消失了。

        7
  •  1
  •   lux7    4 年前

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

    connection = pyodbc.connect()
    

    错误发生在以下情况:

    • DB连接已在同一python中多次打开 文件
    • 在调试模式下,已到达断点 与DB的连接打开时

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

    • 仅打开DB一次,并在所有需要的位置重复使用连接
    • 使用DB连接后,请将其正确关闭

    希望,这将帮助任何人!

        8
  •  1
  •   Rafa    4 年前

    删除了python解释器和“venv”文件夹以解决我的错误。

        9
  •  1
  •   Aditya vikram Shekhawat    3 年前

    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) 
    
        10
  •  0
  •   amir    3 年前

    我在尝试在断开连接的外部GPU上运行代码时遇到了这个问题。我设置 os.environ['PYOPENCL_CTX']=2 其中GPU 2未连接。所以我只需要将代码更改为操作系统。包围 ['PYOPENCL_CTX'] = 1

        11
  •  0
  •   Khashayar    3 年前

    对我来说,这三行代码已经再现了错误, 不管有多少可用内存 :

    import numpy as np
    from sklearn.cluster import KMeans
    
    X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])
    kmeans = KMeans(n_clusters=1, random_state=0).fit(X)
    

    我可以通过删除并重新安装 scikit-learn 包裹非常类似的解决方案 this

        12
  •  0
  •   Pablo Rees    2 年前

    如果尝试使用concurrent复合线程,也会发生这种情况。期货例如,呼叫。映射到另一个内部。映射调用。

    可以通过移除其中一个来解决此问题。映射调用。

        13
  •  0
  •   MichaelU    2 年前

    我在使用scikit learn的kmeans时遇到了同样的问题。 从scikit learn 1.0升级到1.0.2为我解决了这个问题。

        14
  •  0
  •   Dimitris Paraschakis    2 年前

    此问题通常是由环境中不兼容的库引起的。在我的情况下 pyspark 图书馆

        15
  •  0
  •   Balázs Herczeg    2 年前

    我在运行PHPUnit时在PHP中遇到了这个错误。原因是循环依赖。

        16
  •  -2
  •   Ashish    5 年前

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

    级联分类器(cv2.data.haarcascades+“haarcascade\u frontalface\u default.xml”)

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

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