Re: [Pyobjc-dev] [Pythonmac-SIG] PyObjC and macOS 10.12 (Sierra)
Brought to you by:
ronaldoussoren
From: Ronald O. <ron...@ma...> - 2016-10-24 17:37:45
|
> On 13 Oct 2016, at 12:47, Ronald Oussoren <ron...@ma...> wrote: > > >> On 12 Oct 2016, at 23:06, Nicholas Riley <nj...@il... <mailto:nj...@il...>> wrote: >> >> Have you tried DevToolsSecurity? Sounds like it might be a >> security/codesigning issue. >> >> https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/DevToolsSecurity.8.html <https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/DevToolsSecurity.8.html> >> > > I hadn’t, but changing this doesn’t help. Debugging on the console isn’t too bad, although I am stuck at the moment while debugging one of the crashes I get running the testsuite on 10.12. > > The two programs below both call DCSGetTermRangeInString, both work on 10.11, but the python version crashes on 10.12. Sadly enough it crashes in a secondary thread that’s doing some work for the DictionaryServices framework. I’m not yet sure why the python script causes a crash of the interpreter. > > # Python > from DictionaryServices import DCSGetTermRangeInString > > text = "the hello world program" > rng = DCSGetTermRangeInString(None, text, 5) > print(rng) > #end > > // Objective-C > #import <CoreServices/CoreServices.h> > #import <Foundation/Foundation.h> > > int main(void) > { > CFRange rng; > > rng = DCSGetTermRangeInString(NULL, CFSTR("the hello world program"), 5); > NSLog(@"%ld %ld", rng.location, rng.length); > return 0; > } > // end I can now reproduce the problem using a small extension that doesn’t even touch PyObjC. See <https://bitbucket.org/ronaldoussoren/pyobjc/issues/174/crash-using-dictionaryservices-on-1012>. There is some material difference between /usr/bin/python and a python.org binary installation of Python 3.5. This demonstrates the same crash using small C extension that exports a function that calls DCSGetTermInRange. The crash is in a background thread that appears to do work for DCSGetTermInRange. Next steps: * Try to reproduce using python.org installer for 2.7 * Try to reproduce using a local build of 3.5.2 Now where did I leave my Yak shaving kit? Ronald |