New submission from Alex Croitor:
Hi, I'm building Python 2.7.11 with debug symbols and no optimizations, but
without the --with-debug switch, on macOS 10.11.5, El Capitan + XCode 7.3.1.
Whenever I try to execute an OpenGL demo or example, I get a segmentation fault
or a bus error with a weird back trace.
If I build Python2 in regular release mode (-O2) the demos run fine without
crashing.
I also tried building Python 3.5.2, both in release, and debug mode, and the
demos do not crash either.
What I tried after, was to update the files used in Modules/_ctypes/libffi_osx
folder, with the latest version (libffi-3.2.1), and some small build
adjustments, and then it doesn't crash anymore with -O0.
But then I did a diff of libffi_osx on Python 2 and 3, and there are no
significant differences there. So I assume the issue is somewhere in the
_ctypes module code.
Providing configure line for python2 (it was mostly the same for python3)
./configure --prefix="/usr/local/Cellar/python/2.7.11_custom" --enable-ipv6
--datarootdir=/usr/local/Cellar/python/2.7.11_custom/share
--datadir=/usr/local/Cellar/python/2.7.11_custom/share
--enable-framework=/usr/local/Cellar/python/2.7.11_custom/Frameworks
--without-gcc MACOSX_DEPLOYMENT_TARGET=10.11 CFLAGS="-O0 -fno-inline
-fno-omit-frame-pointer -g" LDFLAGS="-O0" CPPFLAGS="-O0" OPT="-O0 -g" CC="clang"
Setting just -O0 without the no-inline and no-omit-frame-pointer does not
influence anything, Python2 still crashes.
Attaching a small python test from the opengl source package.
And here is the backtrace:
Process 32599 stopped
* thread #1: tid = 0x15ecc1, 0x00007fff95bb2d11 AppKit`-[NSView
_drawRect:clip:] + 3689, queue = 'com.apple.main-thread', stop reason =
EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
frame #0: 0x00007fff95bb2d11 AppKit`-[NSView _drawRect:clip:] + 3689
AppKit`-[NSView _drawRect:clip:]:
-> 0x7fff95bb2d11 <+3689>: movss %xmm0, (%r13,%r15)
0x7fff95bb2d18 <+3696>: movss 0x4(%r13,%r15), %xmm1 ; xmm1 =
mem[0],zero,zero,zero
0x7fff95bb2d1f <+3703>: ucomiss %xmm0, %xmm1
0x7fff95bb2d22 <+3706>: jbe 0x7fff95bb2d2b ; <+3715>
(lldb) bt
error: unable to find CIE at 0x00000018 for cie_id = 0x00000004 for entry at
0x00000018.
error: unable to find CIE at 0x00000050 for cie_id = 0x00000004 for entry at
0x00000050.
error: time.so debug map object file
'/Users/alex/Dev/python2_debug/Python-2.7.11/debug/build/temp.macosx-10.11-x86_64-2.7-pydebug/Users/alex/Dev/python2_debug/Python-2.7.11/Modules/timemodule.o'
has changed (actual time is 0x58171936, debug map time is 0x58171933) since
this executable was linked, file will be ignored
* thread #1: tid = 0x15ecc1, 0x00007fff95bb2d11 AppKit`-[NSView
_drawRect:clip:] + 3689, queue = 'com.apple.main-thread', stop reason =
EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
* frame #0: 0x00007fff95bb2d11 AppKit`-[NSView _drawRect:clip:] + 3689
frame #1: 0x00007fff95c0acad AppKit`-[NSView
_recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1873
frame #2: 0x00007fff95c0b08a AppKit`-[NSView
_recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2862
frame #3: 0x00007fff95bb03fb AppKit`-[NSView
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
+ 838
frame #4: 0x00007fff95bafbe0 AppKit`-[NSThemeFrame
_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
+ 334
frame #5: 0x00007fff95badfeb AppKit`-[NSView
_displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 2449
frame #6: 0x00007fff95ba93f5 AppKit`-[NSView displayIfNeeded] + 1950
frame #7: 0x00007fff95ba8c3c AppKit`-[NSWindow displayIfNeeded] + 232
frame #8: 0x00007fff9622d41b
AppKit`___NSWindowGetDisplayCycleObserver_block_invoke6365 + 476
frame #9: 0x00007fff95ba85d6 AppKit`__37+[NSDisplayCycle
currentDisplayCycle]_block_invoke + 941
frame #10: 0x00007fff8ba17f71
QuartzCore`CA::Transaction::run_commit_handlers(CATransactionPhase) + 85
frame #11: 0x00007fff8ba1742c
QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 160
frame #12: 0x00007fff8ba170ec QuartzCore`CA::Transaction::commit() + 508
frame #13: 0x00007fff8ba22977
QuartzCore`CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned
long, void*) + 71
frame #14: 0x00007fff8dd47067
CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ +
23
frame #15: 0x00007fff8dd46fd7 CoreFoundation`__CFRunLoopDoObservers + 391
frame #16: 0x00007fff8dd25ef8 CoreFoundation`CFRunLoopRunSpecific + 328
frame #17: 0x00007fff8c95c3f6 Foundation`-[NSRunLoop(NSRunLoop)
limitDateForMode:] + 201
frame #18: 0x00000001051c0232 GLUT`-[GLUTApplication run] + 269
frame #19: 0x00000001051cce59 GLUT`glutMainLoop + 254
frame #20: 0x00000001017818af _ctypes.so`ffi_call_unix64 + 79 at
darwin64.S:76
frame #21: 0x000000010178253f _ctypes.so`ffi_call(cif=0x00007fff5fbfe610,
fn=(GLUT`glutMainLoop), rvalue=0x00007fff5fbfe6a0, avalue=0x00007fff5fbfe6a0) +
1487 at x86-ffi64.c:581
frame #22: 0x000000010177782c _ctypes.so`_call_function_pointer(flags=4353,
pProc=(GLUT`glutMainLoop), avalues=0x00007fff5fbfe6a0,
atypes=0x00007fff5fbfe6a0, restype=0x00000001017899b0,
resmem=0x00007fff5fbfe6a0, argcount=0) + 332 at callproc.c:836
frame #23: 0x0000000101776fd1
_ctypes.so`_ctypes_callproc(pProc=(GLUT`glutMainLoop),
argtuple=0x0000000100321060, flags=4353, argtypes=0x0000000100321060,
restype=0x0000000100213a28, checker=0x0000000000000000) + 1345 at
callproc.c:1179
frame #24: 0x0000000101768214
_ctypes.so`PyCFuncPtr_call(self=0x0000000105276060, inargs=0x0000000100321060,
kwds=0x0000000000000000) + 1172 at _ctypes.c:3965
frame #25: 0x0000000100016d32 Python`PyObject_Call(func=0x0000000105276060,
arg=0x0000000100321060, kw=0x0000000000000000) + 130 at abstract.c:2546
frame #26: 0x0000000100156dd6 Python`do_call(func=0x0000000105276060,
pp_stack=0x00007fff5fbfec80, na=0, nk=0) + 566 at ceval.c:4568
frame #27: 0x000000010015466a
Python`call_function(pp_stack=0x00007fff5fbfec80, oparg=0) + 2138 at
ceval.c:4373
frame #28: 0x000000010014e843
Python`PyEval_EvalFrameEx(f=0x0000000101625660, throwflag=0) + 65187 at
ceval.c:2987
frame #29: 0x000000010013e893
Python`PyEval_EvalCodeEx(co=0x00000001016283b0, globals=0x0000000100395958,
locals=0x0000000100395958, args=0x0000000000000000, argcount=0,
kws=0x0000000000000000, kwcount=0, defs=0x0000000000000000, defcount=0,
closure=0x0000000000000000) + 4979 at ceval.c:3582
frame #30: 0x000000010013d515 Python`PyEval_EvalCode(co=0x00000001016283b0,
globals=0x0000000100395958, locals=0x0000000100395958) + 85 at ceval.c:669
frame #31: 0x000000010018ce22 Python`run_mod(mod=0x0000000103824050,
filename="./test_glutinit.py", globals=0x0000000100395958,
locals=0x0000000100395958, flags=0x00007fff5fbff660, arena=0x0000000101503b40)
+ 98 at pythonrun.c:1370
frame #32: 0x000000010018d28f
Python`PyRun_FileExFlags(fp=0x00007fff7ae2b050, filename="./test_glutinit.py",
start=257, globals=0x0000000100395958, locals=0x0000000100395958, closeit=1,
flags=0x00007fff5fbff660) + 223 at pythonrun.c:1356
frame #33: 0x000000010018c5e9
Python`PyRun_SimpleFileExFlags(fp=0x00007fff7ae2b050,
filename="./test_glutinit.py", closeit=1, flags=0x00007fff5fbff660) + 729 at
pythonrun.c:948
frame #34: 0x000000010018c03c
Python`PyRun_AnyFileExFlags(fp=0x00007fff7ae2b050,
filename="./test_glutinit.py", closeit=1, flags=0x00007fff5fbff660) + 140 at
pythonrun.c:752
frame #35: 0x00000001001afdff Python`Py_Main(argc=2,
argv=0x00007fff5fbff700) + 4271 at main.c:640
frame #36: 0x0000000100000f82 Python`___lldb_unnamed_function1$$Python + 34
frame #37: 0x00007fffa03a25ad libdyld.dylib`start + 1
----------
components: ctypes
files: test_glutinit.py
messages: 279777
nosy: Alex Croitor
priority: normal
severity: normal
status: open
title: Bus error / segmentation fault on macOS debug build when using ctypes
OpenGL
type: crash
versions: Python 2.7
Added file: http://bugs.python.org/file45289/test_glutinit.py
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue28567>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com