You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Panda3D crashes upon ShowBase.run() when having threading-model cull/draw
in the PRC in macOS.
The issue is probably related to the TaskManager, perhaps caused by the __igLoop Task (rdb).
Removing threading-model cull/draw from Config.prc or setting support-threads #f works around the issue and the application appears to run as expected. However, the latter may not be a feasible option.
The issue is both reproducible with arm64 and x86_64 run via arch -x86_64 /path/to/python3 ./test.py on an ARM based system.
Steps to Reproduce
Reproducer (this is the sample from the Panda3D tutorial):
from direct.showbase.ShowBase import ShowBase
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
app = MyApp()
app.run()
Environment
Operating system: macOS 12.3
System architecture: arm64 (and x86_64 via Rosetta2)
-[NSOpenGLContext update] must be called from the main thread if the context has a view.
is a changed requirement in a newer macOS version.
This sounds like it makes the multi-threaded pipeline impossible. We have to update the context for the thread it's in according to the Apple documentation, but if that must be the main thread, we can't draw on a different thread than the main thread.
I don't have a recent enough mac that is able to run macOS 12.0, my mac is too old to even install the XCode that I need to be able to use the macOS 12 SDK. So there's no way for me to fix this.
Can you use a version of Panda3D built targeting an older macOS version?
It looks like we can get away with updating the context in another thread just fine. So, going to check in a fix that updates the context on the main thread.
Description
Panda3D crashes upon ShowBase.run() when having
threading-model cull/draw
in the PRC in macOS.
The issue is probably related to the TaskManager, perhaps caused by the
__igLoop
Task (rdb).Removing
threading-model cull/draw
fromConfig.prc
or settingsupport-threads #f
works around the issue and the application appears to run as expected. However, the latter may not be a feasible option.The issue is both reproducible with
arm64
andx86_64
run viaarch -x86_64 /path/to/python3 ./test.py
on an ARM based system.Steps to Reproduce
Reproducer (this is the sample from the Panda3D tutorial):
Environment
Crash report
The text was updated successfully, but these errors were encountered: