【问题标题】:python segmentation fault when closing / quitting关闭/退出时出现python分段错误
【发布时间】:2011-09-16 22:06:51
【问题描述】:

我有一个奇怪的错误,现在在 2 台机器上重复出现。它可能仅限于 python 2.7 64 位,但这还不清楚。在 Mac OS X 10.7 上,我得到: 分段错误:11 在 10.6 上,每当我关闭 python 时,我都会遇到一个简单的“分段错误”。

但是,该错误很难重现。简单的python脚本,例如: python -c "导入系统;打印 sys.maxint" 打开和关闭没有问题。

我曾怀疑 matplotlib 存在问题,但同样如此 python -c "导入 pylab;pylab.plot();pylab.show()" 也没有任何问题。

但是,有许多不同的包在 python 关闭时会导致分段错误,但不会在交互式会话期间,也不会在脚本完成之前。因此,该错误不会影响我的任何代码 - 但在 10.7 中运行任何内容时会造成混乱,因为会弹出焦点窃取错误消息。

我会努力列出并记录导致崩溃的脚本/模块,但我想我现在提出这个问题,看看是否有其他人遇到过类似的问题。

这是一个示例引用(感谢 Ned 的建议)。

Process:         python2.7 [42731]
Path:            /usr/local/bin/python
Identifier:      python2.7
Version:         ??? (???)
Code Type:       X86-64 (Native)
Parent Process:  bash [1838]

Date/Time:       2011-09-16 20:38:52.847 -0600
OS Version:      Mac OS X 10.7.1 (11B2118)
Report Version:  9

Interval Since Last Report:          11388 sec
Crashes Since Last Report:           12
Per-App Crashes Since Last Report:   11
Anonymous UUID:                      CE462F4B-5DAF-482A-8901-28ADB7AB0AD6

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000008

VM Regions Near 0x8:
--> 
    __TEXT                 0000000100000000-0000000100001000 [    4K] r-x/rwx SM=COW  /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7

Application Specific Information:
objc[42731]: garbage collection is OFF

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   org.python.python               0x00000001000c3f71 new_threadstate + 305
1   org.python.python               0x00000001000c3fe8 PyGILState_Ensure + 40
2   h5e.so                          0x0000000106558c21 __pyx_f_4h5py_3h5e_err_callback + 33 (h5e.c:2045)
3   libhdf5.7.dylib                 0x0000000106323940 H5E_dump_api_stack + 144
4   libhdf5.7.dylib                 0x0000000106320428 H5Eget_auto2 + 136
5   libhdf5.7.dylib                 0x00000001062bf2f0 H5_term_library + 64
6   libsystem_c.dylib               0x00007fff8ff1b7d0 __cxa_finalize + 282
7   libsystem_c.dylib               0x00007fff8ff1b652 exit + 18
8   python                          0x0000000100000e51 _start + 255
9   python                          0x0000000100000d51 start + 33

Thread 1:: Dispatch queue: com.apple.libdispatch-manager
0   libsystem_kernel.dylib          0x00007fff8bcfd7e6 kevent + 10
1   libdispatch.dylib               0x00007fff8bdf760e _dispatch_mgr_invoke + 923
2   libdispatch.dylib               0x00007fff8bdf619e _dispatch_mgr_thread + 54

Thread 2:
0   libsystem_kernel.dylib          0x00007fff8bcfd192 __workq_kernreturn + 10
1   libsystem_c.dylib               0x00007fff8ff2a594 _pthread_wqthread + 758
2   libsystem_c.dylib               0x00007fff8ff2bb85 start_wqthread + 13

Thread 3:
0   libsystem_kernel.dylib          0x00007fff8bcfd192 __workq_kernreturn + 10
1   libsystem_c.dylib               0x00007fff8ff2a594 _pthread_wqthread + 758
2   libsystem_c.dylib               0x00007fff8ff2bb85 start_wqthread + 13

Thread 4:
0   libsystem_kernel.dylib          0x00007fff8bcfd192 __workq_kernreturn + 10
1   libsystem_c.dylib               0x00007fff8ff2a594 _pthread_wqthread + 758
2   libsystem_c.dylib               0x00007fff8ff2bb85 start_wqthread + 13

Thread 5:
0   libsystem_kernel.dylib          0x00007fff8bcfcdf2 __select + 10
1   Tcl                             0x00000001022eb80b NotifierThreadProc + 558
2   libsystem_c.dylib               0x00007fff8ff288bf _pthread_start + 335
3   libsystem_c.dylib               0x00007fff8ff2bb75 thread_start + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000001  rbx: 0x0000000000000001  rcx: 0x0000000000000b00  rdx: 0x00007fff5fbff034
  rdi: 0x00000a0000000b03  rsi: 0x00000b0000000b00  rbp: 0x00007fff5fbff0c0  rsp: 0x00007fff5fbff0a0
   r8: 0x00007fff5fbff03c   r9: 0x00007fff5fbff038  r10: 0x0000000000000081  r11: 0x00000000e33a913f
  r12: 0x00000001062bf2b0  r13: 0x0000000000000000  r14: 0x0000000000000000  r15: 0x0000000101bd05a0
  rip: 0x00000001000c3f71  rfl: 0x0000000000010202  cr2: 0x0000000000000008
Logical CPU: 0

Binary Images:
       0x100000000 -        0x100000fff +python (??? - ???) <BA9D2124-1753-3A21-91BE-15C8CD5FE7F3> /usr/local/bin/python
       0x100003000 -        0x100142fe7 +org.python.python (, [c] 2004-2011 Python Software Foundation. - ???) <C6142A6D-0D50-32D9-A058-2A2BA484D94E> /Library/Frameworks/Python.framework/Versions/2.7/Python
        --SNIP - TOO LONG--
    0x7fff98338000 -     0x7fff9841cdef  libobjc.A.dylib (228.0.0 - compatibility 1.0.0) <C5F2392D-B481-3A9D-91BE-3D039FFF4DEC> /usr/lib/libobjc.A.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 6
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 1288178
    thread_create: 1
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=170.9M resident=77.2M(45%) swapped_out_or_unallocated=93.7M(55%)
Writable regions: Total=169.1M written=87.2M(52%) resident=111.0M(66%) swapped_out=1536K(1%) unallocated=58.2M(34%)

REGION TYPE                      VIRTUAL
===========                      =======
CG image                              4K
CG raster data                       64K
CG shared images                   3416K
CoreGraphics                         16K
CoreServices                       1800K
MALLOC                            140.4M
MALLOC guard page                    48K
Memory tag=242                       12K
Memory tag=251                        8K
STACK GUARD                        56.0M
Stack                              10.1M
VM_ALLOCATE                        16.1M
__CI_BITMAP                          80K
__DATA                             15.6M
__IMAGE                            1256K
__LINKEDIT                         53.4M
__TEXT                            117.5M
__UNICODE                           544K
mapped file                        30.4M
shared memory                       308K
===========                      =======
TOTAL                             446.8M

产生相同(大约)错误的 C 代码: helloworld.cpp -

#include<iostream>
using namespace std;

int main() {
    char *blah;
    cout << "Hello World" << endl << "I am the C sea" << endl;
    cin >> blah;
    cout << blah << endl;
    return 0;
}

编译:

g++ helloworld.cpp -o helloworld.out
./helloworld.out    

错误报告 #2:

Process:         helloworld.out [10982]
Path:            /Users/USER/*/helloworld.out
Identifier:      helloworld.out
Version:         ??? (???)
Code Type:       X86-64 (Native)
Parent Process:  bash [10803]

Date/Time:       2011-09-24 09:36:43.979 -0600
OS Version:      Mac OS X 10.7.1 (11B2118)
Report Version:  9

Interval Since Last Report:          271170 sec
Crashes Since Last Report:           119
Per-App Crashes Since Last Report:   4
Anonymous UUID:                      CE462F4B-5DAF-482A-8901-28ADB7AB0AD6

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: 0x000000000000000d, 0x0000000000000000

VM Regions Near 0:
--> 
    __TEXT                 0000000104ca3000-0000000104ca4000 [    4K] r-x/rwx SM=COW  /Users/USER/*/*.out

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   helloworld.out                  0x0000000104ca3d79 main + 169
1   ???                             0x0073657261757173 0 + 32481164257489267

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x0000000000000000  rcx: 0x0000000000000008  rdx: 0x0000000000000000
  rdi: 0x00007fff7c8e24e8  rsi: 0x00007fab53000000  rbp: 0x00007fff648a28e0  rsp: 0x00007fff648a28d8
   r8: 0x00000000fb343fb8   r9: 0x0000000000000000  r10: 0x0000000053000000  r11: 0x0000000000000246
  r12: 0x0000000000000000  r13: 0x0000000000000000  r14: 0x0000000000000000  r15: 0x0000000000000000
  rip: 0x0000000104ca3d79  rfl: 0x0000000000010202  cr2: 0x00007fab53001000
Logical CPU: 1

Binary Images:
       0x104ca3000 -        0x104ca3ff7 +helloworld.out (??? - ???) <68FD4206-E8D6-340F-B25B-E2DE6FB1D3BC> /Users/USER/*/helloworld.out
    0x7fff648a3000 -     0x7fff648d7ac7  dyld (195.5 - ???) <4A6E2B28-C7A2-3528-ADB7-4076B9836041> /usr/lib/dyld
    0x7fff8bce6000 -     0x7fff8bd06fff  libsystem_kernel.dylib (1699.23.2 - compatibility 1.0.0) <55377210-60A0-3F33-9D45-B2D19AA91859> /usr/lib/system/libsystem_kernel.dylib
    0x7fff8bdf4000 -     0x7fff8be02fff  libdispatch.dylib (187.5.0 - compatibility 1.0.0) <698F8EFB-7075-3111-94E3-891156C88172> /usr/lib/system/libdispatch.dylib
    0x7fff8c415000 -     0x7fff8c41cfff  libcopyfile.dylib (85.1.0 - compatibility 1.0.0) <65602684-33B1-32DE-802B-050CE07659AC> /usr/lib/system/libcopyfile.dylib
    0x7fff8cf65000 -     0x7fff8cfa7ff7  libcommonCrypto.dylib (55010.0.0 - compatibility 1.0.0) <A5B9778E-11C3-3F61-B740-1F2114E967FB> /usr/lib/system/libcommonCrypto.dylib
    0x7fff8cfcc000 -     0x7fff8cfccfff  libkeymgr.dylib (23.0.0 - compatibility 1.0.0) <61EFED6A-A407-301E-B454-CD18314F0075> /usr/lib/system/libkeymgr.dylib
    0x7fff8cfcd000 -     0x7fff8cfd1fff  libmathCommon.A.dylib (2026.0.0 - compatibility 1.0.0) <FF83AFF7-42B2-306E-90AF-D539C51A4542> /usr/lib/system/libmathCommon.A.dylib
    0x7fff8d001000 -     0x7fff8d006fff  libcompiler_rt.dylib (6.0.0 - compatibility 1.0.0) <98ECD5F6-E85C-32A5-98CD-8911230CB66A> /usr/lib/system/libcompiler_rt.dylib
    0x7fff8e5bb000 -     0x7fff8e5c3fff  libsystem_dnssd.dylib (??? - ???) <1FA8F861-9D0D-33D2-939F-5BD382718B97> /usr/lib/system/libsystem_dnssd.dylib
    0x7fff8e5d2000 -     0x7fff8e5d6fff  libdyld.dylib (195.5.0 - compatibility 1.0.0) <F1903B7A-D3FF-3390-909A-B24E09BAD1A5> /usr/lib/system/libdyld.dylib
    0x7fff8e67d000 -     0x7fff8e69aff7  libxpc.dylib (77.16.0 - compatibility 1.0.0) <1FEBB79D-8537-38A4-882D-1E2AE212CD31> /usr/lib/system/libxpc.dylib
    0x7fff8e999000 -     0x7fff8e99fff7  libunwind.dylib (30.0.0 - compatibility 1.0.0) <1E9C6C8C-CBE8-3F4B-A5B5-E03E3AB53231> /usr/lib/system/libunwind.dylib
    0x7fff8ebdd000 -     0x7fff8ebe8ff7  libc++abi.dylib (14.0.0 - compatibility 1.0.0) <8FF3D766-D678-36F6-84AC-423C878E6D14> /usr/lib/libc++abi.dylib
    0x7fff8f110000 -     0x7fff8f111fff  libsystem_sandbox.dylib (??? - ???) <8D14139B-B671-35F4-9E5A-023B4C523C38> /usr/lib/system/libsystem_sandbox.dylib
    0x7fff8f21e000 -     0x7fff8f21ffff  libunc.dylib (24.0.0 - compatibility 1.0.0) <0482C762-746D-37EB-A8C9-E1048CF70462> /usr/lib/system/libunc.dylib
    0x7fff8f5d0000 -     0x7fff8f5d1ff7  libsystem_blocks.dylib (53.0.0 - compatibility 1.0.0) <8BCA214A-8992-34B2-A8B9-B74DEACA1869> /usr/lib/system/libsystem_blocks.dylib
    0x7fff8feda000 -     0x7fff8ffb7fef  libsystem_c.dylib (763.11.0 - compatibility 1.0.0) <D48352AB-D1F1-3D8F-875C-2C807425CB8C> /usr/lib/system/libsystem_c.dylib
    0x7fff907e1000 -     0x7fff907e6fff  libcache.dylib (47.0.0 - compatibility 1.0.0) <3D114C8A-AD1F-3C78-9E8C-B8F3810740E5> /usr/lib/system/libcache.dylib
    0x7fff908ec000 -     0x7fff9095ffff  libstdc++.6.dylib (52.0.0 - compatibility 7.0.0) <6BDD43E4-A4B1-379E-9ED5-8C713653DFF2> /usr/lib/libstdc++.6.dylib
    0x7fff90e9b000 -     0x7fff90ec8fe7  libSystem.B.dylib (159.0.0 - compatibility 1.0.0) <B4654B67-7521-3CD2-A67D-E1393C459D23> /usr/lib/libSystem.B.dylib
    0x7fff9165c000 -     0x7fff9165dfff  libdnsinfo.dylib (395.7.0 - compatibility 1.0.0) <37FEFE78-BCB5-37EC-8E99-747469BCA4C7> /usr/lib/system/libdnsinfo.dylib
    0x7fff91704000 -     0x7fff91740fff  libsystem_info.dylib (??? - ???) <BC49C624-1DAB-3A37-890F-6EFD46538424> /usr/lib/system/libsystem_info.dylib
    0x7fff920e2000 -     0x7fff920e3ff7  libremovefile.dylib (21.0.0 - compatibility 1.0.0) <AACAD200-A346-3653-89E2-D9D10FE4DC06> /usr/lib/system/libremovefile.dylib
    0x7fff92227000 -     0x7fff92230fff  libnotify.dylib (80.0.0 - compatibility 1.0.0) <BD08553D-8088-38A8-8007-CF5C0B8F0404> /usr/lib/system/libnotify.dylib
    0x7fff92e3e000 -     0x7fff92e40fff  libquarantine.dylib (36.0.0 - compatibility 1.0.0) <A6B3CF07-A0D0-3C56-9BEC-33CBDD63CB89> /usr/lib/system/libquarantine.dylib
    0x7fff9385e000 -     0x7fff93864fff  libmacho.dylib (800.0.0 - compatibility 1.0.0) <548BAEB6-8C4C-3B0F-AB0C-7E1C960BCAB5> /usr/lib/system/libmacho.dylib
    0x7fff95371000 -     0x7fff9537bff7  liblaunch.dylib (392.18.0 - compatibility 1.0.0) <EB5C4B29-D3B7-38AC-A646-3D445C767F03> /usr/lib/system/liblaunch.dylib
    0x7fff9777d000 -     0x7fff97782ff7  libsystem_network.dylib (??? - ???) <4ABCEEF3-A3F9-3E06-9682-CE00F17138B7> /usr/lib/system/libsystem_network.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 8407398
    thread_create: 1
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=50.0M resident=14.0M(28%) swapped_out_or_unallocated=36.1M(72%)
Writable regions: Total=17.4M written=60K(0%) resident=104K(1%) swapped_out=0K(0%) unallocated=17.3M(99%)

REGION TYPE                      VIRTUAL
===========                      =======
MALLOC                             9396K
MALLOC guard page                    16K
STACK GUARD                        56.0M
Stack                              8192K
__DATA                              516K
__LINKEDIT                         47.1M
__TEXT                             3000K
shared memory                        12K
===========                      =======
TOTAL                             123.8M

Model: MacBookAir4,2, BootROM MBA41.0077.B00, 2 processors, Intel Core i7, 1.8 GHz, 4 GB, SMC 1.73f63
Graphics: Intel HD Graphics 3000, Intel HD Graphics 3000, Built-In, 384 MB
Memory Module: BANK 0/DIMM0, 2 GB, DDR3, 1333 MHz, 0x80AD, 0x484D54333235533642465238432D48392020
Memory Module: BANK 1/DIMM0, 2 GB, DDR3, 1333 MHz, 0x80AD, 0x484D54333235533642465238432D48392020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0xE9), Broadcom BCM43xx 1.0 (5.100.98.75.10)
Bluetooth: Version 4.0.0f4, 2 service, 11 devices, 1 incoming serial ports
Serial ATA Device: APPLE SSD SM256C, 251 GB
USB Device: FaceTime Camera (Built-in), apple_vendor_id, 0x850a, 0xfa200000 / 3
USB Device: hub_device, 0x0424  (SMSC), 0x2513, 0xfa100000 / 2
USB Device: BRCM20702 Hub, 0x0a5c  (Broadcom Corp.), 0x4500, 0xfa110000 / 5
USB Device: Bluetooth USB Host Controller, apple_vendor_id, 0x821f, 0xfa113000 / 6
USB Device: Apple Internal Keyboard / Trackpad, apple_vendor_id, 0x024c, 0xfa120000 / 4
USB Device: hub_device, 0x0424  (SMSC), 0x2513, 0xfd100000 / 2
USB Device: Internal Memory Card Reader, apple_vendor_id, 0x8404, 0xfd110000 / 3

【问题讨论】:

  • 您可以尝试编译或下载python解释器的调试版本并使用GDB运行脚本。您至少可以追溯导致问题的原因。
  • 如果在 OS X 上使用的 Python 是一个框架构建,“focus-stealing”错误消息应该包含完整的堆栈跟踪。保存并发布跟踪。退出python时出现段错误是不正常的。
  • 看起来它可能与 hdf5(科学数据格式)有关。也许是当您使用 matplotlib 访问某个文件或数据对象时?
  • 你能制作一个 SSCCE(简短、独立、正确、示例)吗?
  • 戴夫,阿戈斯 - 谢谢。我只是偶然发现,当我运行一个使用 cin 的简单 C++ 程序时会发生同样的错误;显然它独立于python,只与访问内存有关......我在这里超出了我的深度,但我认为我可以提供一个在任何其他机器上完全无法重现的SSCCE......

标签: python


【解决方案1】:

从堆栈跟踪中,您的 Python 解释器在进程退出时 C 库运行的“atexit”处理程序中崩溃。具体来说,清理“HDF5”库的代码似乎遇到了错误。我相信崩溃的发生是因为 Python 运行时大部分都被清理了,当库尝试调用一些错误处理程序时,处理程序已经消失了。

您的 C 应用程序是“相同”的问题,只是因为它还使用了未初始化的变量。

如果 Python 总是以非常相似的堆栈跟踪崩溃(在转储报告中查找“Crashed Thread: X”,然后在转储中找到 X 线程的崩溃回溯),那么 HDF5 的运行方式有问题正在使用。也许这是 Mac Python 端口中的一个已知错误? (我不太确定 hdf5 库是什么。)

【讨论】:

  • 谢谢 P.T.我会留意崩溃的线程,希望能帮助我找出问题所在...
  • Python 根本不提供任何堆栈跟踪;只是无用的错误 Segmentation fault: 11. 我想前进的唯一方法是在 gdb 或类似的东西中运行 python?我自己没有执行此操作所需的经验...我会尝试重新安装 hdf5,但这就是我能想到的。
  • 您在原始问题中发布的 OS X “trackback”之类的内容应该足够了。此时无需在 GDB 下运行。
【解决方案2】:

也可以这样:

http://bugs.python.org/issue1856

在足够新的 3.2 和 3.3 中修复,在 2.x 中未修复

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 2020-02-23
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2016-11-17
    • 2017-04-14
    • 1970-01-01
    • 2019-03-27
    相关资源
    最近更新 更多