Release 2020.2.3 fixing launch issues for macOS Catalina/Mojave

Hi folks, I’ve spent most of this week battling with Apple’s “Gatekeeper”. This used to be a relatively minor annoyance - it used to complain that we weren’t a known developer so you’d have to agree to the app running.

Then in Catalina it got worse and the app would appear to start but then crash with no information (but it was actually the Gatekeeper jus tbeing more annoying).

Well, happily after a week of battling I believe we won!! PsychoPy 2020.2.3 is now fully signed by us at Open Science Tools Limited and, although it asks about providing access to your files, it does run and no longer needs you to visit security panels to agree. Woop woop!! :rocket:

5 Likes

@jon Congratulations to the whole PsychoPy team! I love it when the bots lose! :robot:

1 Like

Thanks!

Is there a plan to make PsychoPy compatible with MacOS 11 (Big Sur)? Currently, it crashes due to a failure to load OpenGL framework.

Traceback (most recent call last):
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/pyglet/__init__.py”, line 378, in __getattr__
AttributeError: ‘NoneType’ object has no attribute ‘_create_shadow_window’

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File “/Applications/PsychoPy.app/Contents/Resources/__boot__.py”, line 498, in <module>
  File “/Applications/PsychoPy.app/Contents/Resources/__boot__.py”, line 476, in _run
  File “/Applications/PsychoPy.app/Contents/Resources/psychopyApp.py”, line 104, in <module>
  File “/Applications/PsychoPy.app/Contents/Resources/psychopyApp.py”, line 100, in main
  File “/Applications/PsychoPy.app/Contents/Resources/psychopyApp.py”, line 28, in start_app
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/psychopy/app/_psychopyApp.py”, line 226, in __init__
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/psychopy/app/_psychopyApp.py”, line 262, in onInit
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/psychopy/app/builder/__init__.py”, line 7, in <module>
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/psychopy/app/builder/builder.py”, line 46, in <module>
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/psychopy/app/builder/dialogs/__init__.py”, line 27, in <module>
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/psychopy/app/builder/validators.py”, line 27, in <module>
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/pyglet/window/__init__.py”, line 1896, in <module>
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/pyglet/__init__.py”, line 384, in __getattr__
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/pyglet/gl/__init__.py”, line 100, in <module>
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/pyglet/gl/lib.py”, line 141, in <module>
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/pyglet/gl/lib_agl.py”, line 49, in <module>
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/pyglet/lib.py”, line 118, in load_library
  File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/pyglet/lib.py”, line 286, in load_framework
ImportError: Can’t find framework /System/Library/Frameworks/OpenGL.framework.

Thanks very much!

Eek, I hadn’t looked at this but if macOS 11 is dropping support for OpenGL then we’ve got something of a problem! Rewriting all the rendering calls would be a big task. Doing it just for one OS, especially when we know the timing is less good there, is something we’d have to think about carefully. I’m not sure it’s worth the staff time given the limited staff that we have and other priorities.

Thanks Jon!

I agree that it takes too much effort to re-write low-level drivers just for one platform.

Back to the issue, macOS 11 actually doesn’t drop OpenGL at all, just not supporting the latest version. In my case, I can still see the library in the location (/System/Library/Frameworks/OpenGL.framework) that PsychoPy claims “can’t find”. I haven’t done comparison between macOS 11 and macOS 10.15 in terms of the difference in OpenGL library. But the existence of OpenGL library suggests that there might be some easy to fix issue in the current code.

People will move on to macOS 11 sooner or later, especially for those buying a Mac after this fall. macOS 11 would be their only option by then.

Thanks so much for your time!
Gabriel

Ah, OK, glad they haven’t dropped support altogether then (I believe that is on the cards for one day, because they want people to use Metal instead). The import error you’re seeing is from Pyglet (the lib we use to provide opengl access) not from PsychoPy itself. It might be that newer versions of pyglet will/do handle this seamlessly and we won’t need to worry about it.

Also, there’s the other backend (GLFW). Would be interested to know what happens if you simply switch to wintype=‘glfw’ backend in the Window?

Thanks Jon!

Because I couldn’t open PsychoPy UI at all, I cannot set winType. Is there other ways to change the setting by modifying certain file?

Ah, that’s annoying - so you can’t do from pyglet.window import keys! We can prevent importing of pyglet being a requirement in the next release but for now i think you’ll be able to tweak as follows:

Fetch your open copy of pyglet/window/key.py:
https://github.com/pyglet/pyglet/blob/pyglet-1.5-maintenance/pyglet/window/key.py and save it inside psychopy/app/builder/

Then change psychopy/app/builder/validators.py around line 27 from

from pyglet.window import key

to

try:
    from pyglet.window import key
except Exception:
    from . import key

Hopefully then you can launch the app

It works! Thanks so much, Jon!

I don’t have time to test functions other than launching the app on macOS 11. Will report other issues if I encounter in the future.

Hi Jon - sorry to contribute further rain on your parade, I’m also not able to launch 2020.2.3 in 10.12.6, and weirdly I also seem to have broken my ability to launch previous versions.

Error from console here when launching app version. Judging from what you’ve said, I suspect the first is the smoking gun. I’ve also tried to install using pip and have had the same fail on launch.

94970311-457C-4F5E-8E6D-43468C193930 grantAccessClaim message failed: Error Domain=NSCocoaErrorDomain Code=4099 “The connection to service named com.apple.FileCoordination was invalidated.” UserInfo={NSDebugDescription=The connection to service named com.apple.FileCoordination was invalidated.}

[repeated]

[ERROR] - Unable to find display pipe for IOFB service: 19207

Detected missing constraints for . It cannot be placed because there are not enough constraints to fully define the size and origin. Add the missing constraints, or set translatesAutoresizingMaskIntoConstraints=YES and constraints will be generated for you. If this view is laid out manually on macOS 10.12 and later, you may choose to not call [super layout] from your override. Set a breakpoint on DETECTED_MISSING_CONSTRAINTS to debug. This error will only be logged once.

[ERROR] - Unable to find display pipe for IOFB service: 12291

[ERROR] - Driver reported mode info is out of sync with current mode info. Display 4280b82, driver’s bytePerRow = 11776, driver’s width = 3840, stored width = 3840. Forcing rowbytes to be 4*modeInfo->ioModeInfo.nominalwitdh.

attempt to write to a container /Library/Managed Preferences/fred that does not yet exist. Using client-provided container path without resolving symlinks.

_CGXRemoveWindowFromWindowMovementGroup: window 0xc5 is not attached to window 0xc4

I don’t think that its related but I’m still experiencing internal errors when I try to run the experiment with a warning that says (the content of the message vary but it always says internal error and advises me to send on an error report to developers):

Traceback (most recent call last):
File “/Applications/PsychoPy.app/Contents/Resources/lib/python3.6/psychopy/app/builder/builder.py”, line 1185, in compileScript
File “configobj.pyc”, line 554, in getitem
KeyError: ‘useRunner’

Hi Lucy,

This is one bug we missed, a few people have spotted it! I’ve pushed a bug fix to the next release, in the meantime here is a solution from another thread which will fix it for you in the short term:

1 Like

Thanks very much. Are “unhandled internal errors” bugs then? I feel it would help my understanding as I have ran into a few.

With the popup box you mean? Yes, these only happen when something has gone wrong with the program.

1 Like