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 <rep...@bugs.python.org>
<http://bugs.python.org/issue28567>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to