Opened 4 years ago
Closed 3 years ago
#4663 closed enhancement (fixed)
Make native Apple M1 CPU distribution
Reported by: | Tom Goddard | Owned by: | Zach Pearson |
---|---|---|---|
Priority: | moderate | Milestone: | 1.5 |
Component: | Platform | Version: | |
Keywords: | Cc: | pett, Tristan Croll, Tom Goddard, Greg Couch | |
Blocked By: | 6669, 6778 | Blocking: | |
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description (last modified by )
Apple is replacing Intel CPUs in all machines with ARM cpus. Already have Mac laptop and Mac Mini models with ARM (Apple M1) cpu since late 2020. Apple M1 CPU is 5 nm process vs 10 nm for latest Intel cpus so much more energy efficient, or higher performance at comparable energy.
Macs use Rosetta 2 to run Intel apps on ARM cpu machines. This seems to be working fine for ChimeraX. Native ARM ChimeraX may give higher performance. Python is reported to run up to 3 times faster on ARM cpu vs Intel emulation on Mac.
We proposed making native ARM version in Chan-Zuckerberg Science Initiative (CZI) Essential Open Source Software proposal submitted May 15, 2021 with possible funding date Sept 1, 2021.
Attachments (1)
Change History (74)
comment:1 by , 4 years ago
comment:2 by , 4 years ago
Description: | modified (diff) |
---|
comment:3 by , 4 years ago
It is not clear whether Qt is working on macOS arm64 cpus. Here is the Qt ticket for this "Qt for macOS on Apple Silicon (arm64)":
https://bugreports.qt.io/browse/QTBUG-85279
This ticket is "priority 2" and the "affects" field says 5.15, 6.x but "fix version" field says 6.2. So it may be that 5.15 will not be distributed for Mac arm64.
comment:4 by , 4 years ago
Homebrew offers Qt5 for arm64
https://formulae.brew.sh/formula/qt@5
Homebrew also claims to offer PyQt5 for arm64
https://formulae.brew.sh/formula/pyqt@5
Should test this. Maybe these are really Intel binaries that run using Rosetta 2.
comment:5 by , 4 years ago
Oooh, that's ugly. It's looks like you are most likely to get two separate single-architecture builds in the short term (and maybe forever), which you would have to "lipo" together yourself. No idea how PyQt would handle that. We might have to offer two separate ChimeraX Mac downloads. Ugh.
comment:6 by , 4 years ago
The homebrew pyqt5 and qt5 are native arm64 builds. Can probably use those for a test.
comment:7 by , 4 years ago
I made a relocatable arm64 Python 3.9.6 from the standard python distribution.
I tried homebrew arm64 PyQt5 in the homebrew python 3.9.6, imports. May be able to copy this to the ChimeraX Python. May not be relocatable. Need to try it.
Commented out prereqs builds of ambertools, openmm, PyQt, pytables. OpenMM has a native arm64 build but not going to mess with that now.
Prereqs pip app-install various packages have no arm64 wheel and cannot be built from source: imagecodecs, matplotlib, netcdf4, scipy.
mk/os.make had hardcoded x86_64 in BIN_PLATFORM used in wheel names. Changed this to arm64. Also used OSXVER = 11.3 in core wheel file name and pip install said that is not a supported platform and required 11.0. Not sure why.
h5py used by emdb_sff bundle (segmentation file reader) failed to install. Error dlopen(libhdf5.dylib): image not found. Removed emdb_sff.
Core and all bundles and main app all built. Compiler flags list both arm64 and x86_64, so maybe it is compiling both g++ -arch arm64 -arch x86_64 ....
comment:8 by , 4 years ago
Copying homebrew site-packages/PyQt5 (and with rsync -av --copy-links) and trying to start ChimeraX shows homebrew PyQt5 does not include QtWebEngineWidgets. This is confirmed online, and homebrew does not offer QtWebEngine. So I have no arm64 build of QtWebEngine in PyQt5. ChimeraX will start in nogui mode with lots of error messages because even in nogui mode it tries to import QtWebEngineWidgets.
After commenting out various places where ChimeraX imports QtWebEngineWidgets at startup I got ChimeraX gui to come up without errors. Here are the things that needed to be commented out or disabled. The main losses are the Log panel and recent file history thumbnails.
1) scheme_mgr/manager.py -- return from SchemesManager.add_provider() which is called by toolshed/init.py
2) UI class init() in ui/gui.py imports QtWebEngineWidgets before creating QApplication. Comment that out.
3) MainWindow in ui/gui.py creates FileHistory for showing thumbnails in graphics area. Comment that out.
4) ui/widgets/init.py imports HtmlView. Comment that out.
5) Log panel uses html. Make that not autostart.
With these edits ChimeraX starts and loading PDB models, showing atoms, calculating surfaces worked.
comment:9 by , 4 years ago
On a 2021 Mac Mini (Macmini9,1) with Apple M1 processor, macOS 11.3 and 16 Gbytes memory here are some timings of native ARM vs Intel and also of 2019 MacBook Pro (MacBookPro15,3), 32 Gbytes memory, Intel i9 8-core 2.4 GHz processor. The Mac Mini CPU uses about half the power of the Mac Book Pro. Used the ChimeraX time command for all results.
open 3j3q
ARM 5.1 seconds
Intel 6.2 seconds
MBP Intel 9.8 seconds
addh on 7n30 (150,000 atom ribosome)
ARM 19.7 seconds
Intel 29.5 seconds
MBP Intel 39.1 seconds
surface on 7n30
ARM 9.2 seconds
Intel 9.8 seconds
MBP Intel 11.3 seconds
Rendering surface 7n30 full lighting
ARM (CPU integrated graphics) 7.5 frames/sec
Intel 7.5 frames/sec
MBP Intel (AMD Vega 20 graphics) 27 frames/sec
7n30 nucleotides tube/slab shape box
ARM 6.9 seconds
Intel 12.9 seconds
MBP Intel 14.2 seconds
Map contour calculation EMDB 22657 (apoferritin 420x420x420), level .01 step 1
ARM 0.67 sec
Intel 1.09 sec
MBP Intel 1.24 sec
comment:10 by , 4 years ago
Should time the same actions with Intel ChimeraX (same version with Python 3.9) running under Rosetta emulation to see how much a native build will speed things up. Will wait for tomorrow's Python 3.9 ChimeraX build to test this.
Added these times to previous comment.
comment:11 by , 4 years ago
Qt has announced that Qt 6.2 will support Apple Silicon (arm64) and prerelease 6.2 versions are available now
They also say they will look at arm64 for Qt 5.15.4 commercial LTS. Others say they have built Qt 5.15 for Apple Silicon, but official support is unclear.
comment:12 by , 4 years ago
Qt 6.2 is expected out in September 2021. We might want to port ChimeraX to Qt 6.2 before trying do distribute native arm64 ChimeraX.
comment:13 by , 4 years ago
Here are all the problem dependencies for making a native arm64 ChimeraX
Qt 5, PyQt5, ambertools, pytables, h5py, imagecodecs, matplotlib, netcdf4, scipy
Posts online talk about successfully using homebrew or miniconda to get matplotlib and scipy.
https://solarianprogrammer.com/2021/06/15/install-python-numpy-scipy-matplotlib-macos-apple-silicon-arm64/
https://github.com/h5py/h5py/issues/1810
Posts online also describe compiling PyTables and h5py from source and that hdf5 is available for arm64.
Ambertools compile.
Netcdf4 did not see anyone succeeding.
https://www.gitmemory.com/issue/Unidata/netcdf4-python/1091/803161135
comment:14 by , 4 years ago
Cc: | added |
---|
Supporting Apple Silicon will take a bit of work for me, I think. The big stumbling block will be the Intel MKL library I'm using to replace FFTW2 in Clipper - as far as I understand, the MKL is firmly tied to x86_64 architecture. So I'd have to find and integrate a replacement, which will take a fair bit of work. Not impossible, but far from trivial.
follow-up: 15 comment:15 by , 4 years ago
The macOS arm64 port is going to be a fair bit of work getting several packages ported (ambertools, pytables, matplotlib, ...) and I think we are aiming to do this within about 6 months. We have asked for some funding to support this in a Chan-Zuckerberg Science essential software proposal and we should hear if it gets funded by the end of July. Lack of funding may delay the work.
comment:16 by , 4 years ago
Here is an update on arm64 support for ChimeraX dependencies. Formerly these were missing
Qt 5, PyQt5, ambertools, pytables, h5py, imagecodecs, matplotlib, netcdf4, scipy
Currently (Oct 18, 2021):
PyPi PyQt6 for Qt 6.2 now has a universal Mac wheel. That should also have QWebEngine support.
PySide6 does not have a PyPi arm64 wheel and I can find no discussion of arm64 support.
matplotlib 3.5.0rc1 has mac universal wheel on PyPi, made Oct 1, 2021
h5py (August 23, 2021), imagecodecs (Aug 25, 2021), netcdf4 (June 21, 2021), scipy (Aug 1, 2021) only have mac intel wheels on PyPi. pytables still does not even offer a mac intel binary wheel for python 3.9.
ambertools, I think we compile it and have not attempted it on arm64.
comment:17 by , 4 years ago
I tried PyQt6 and PyQt6-WebEngine PyPi wheels in ChimeraX. They Log and File history and all HTML widgets were broken leaving those panels blank. It spewed 10 copies per second of the following error to the shell
[28898:259:1025/172621.011291:ERROR:network_service_instance_impl.cc(330)] Network service crashed, restarting service.
A test of QtWebEngineView in the system Python 3.8 (/usr/bin/python) with PyQt6 gave the same error. Several hours of investigation revealed the QtWebEngineProcess app that Qt uses to render html was failing to start. Console crash logs show a code signing problem
Process: QtWebEngineProcess [28028] Path: /Users/USER/Library/Python/3.8/lib/python/site-packages/PyQt6/Qt6/lib/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/MacOS/QtWebEngineProcess Date/Time: 2021-10-25 14:29:33.756 -0700 OS Version: macOS 11.6 (20G165) Exception Type: EXC_BAD_ACCESS (Code Signature Invalid) Exception Codes: 0x0000000000000032, 0x00000001045c0000 Exception Note: EXC_CORPSE_NOTIFY Termination Reason: Namespace CODESIGNING, Code 0x2
Online info says with Apple Silicon unsigned apps cannot be run while on Intel cpus they can be run.
https://eclecticlight.co/2021/01/26/when-you-dont-have-permission-to-run-an-app-on-an-m1-mac/
And another article describes how to add an adhoc signature
https://eclecticlight.co/2019/01/17/code-signing-for-the-concerned-3-signing-an-app/
Although the codesign command failed apparently due to an obscure cache issue giving an error
goddard@Toms-Mac-mini chimerax % codesign --force --deep -s - ~/ucsf/chimerax/ChimeraX.app/Contents/lib/python3.9/site-packages/PyQt6/Qt6/lib/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app
/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/lib/python3.9/site-packages/PyQt6/Qt6/lib/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app: replacing existing signature
/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/lib/python3.9/site-packages/PyQt6/Qt6/lib/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app: the codesign_allocate helper tool cannot be found or used
and the solution for that is to copy the QtWebEngineProcess.app and sign the copy.
This whole QtWebEngine problem was discussed today on the PyQt mailing list by Damien Elmes and Phil Thompson and I could have saved a half day if I had found this discussion instead of rediscovering all the problems and solutions!
https://www.riverbankcomputing.com/pipermail/pyqt/2021-October/044322.html
comment:18 by , 4 years ago
The benchmark timings on my latest ChimeraX ARM64 build (Oct 26, 2021, uses PyQt6) and macOS 11.6 seem to have improved since the ones I reported 3 months ago in comment 9. So here are new timings. For Intel emulation and MBP Intel (plugged in) used Oct 24, 2021 daily build.
time open 3j3q (best of 3 tries with close command after each)
ARM 3.8 seconds
Intel 5.6
MBP Intel 6.9
addh on 7n30 (150,000 atom ribosome)
ARM 18.0 seconds
Intel 28.7
MBP Intel 38.7
surface on 7n30 (time surface #1, fastest of 3 times)
ARM 8.9 seconds
Intel 9.6
MBP Intel 11.4
Rendering surface 7n30 full lighting (windowsize 1024 1024 non-retina or 512x512 retina); view ; light full ; gra rate 1 ; roll) most frequent rate over one minute.
ARM (CPU integrated graphics) 12.8 frames/sec
Intel 11.8
MBP Intel (AMD Vega 20 graphics) 27.3
7n30 nucleotides tube/slab shape box (time nuc #1 tube/slab)
ARM 6.7 seconds
Intel 12.6
MBP Intel 14.1
Map contour calculation EMDB 22657 apoferritin 420x420x420, (vol #1 step 1 level .01 ; view ; vol #1 step 1 level .02 ; time vol #1 level .01)
ARM 0.67 sec
Intel 1.02
MBP Intel 1.17
comment:19 by , 4 years ago
I ran the same benchmarks on the new M1 Pro CPU in a MacBook Pro 16" (MacBookPro18,1) released this week (macOS 12.0.1, 16 GBytes memory). Tested this at the SF Union Square Apple store. They did not have the M1 Max CPU on display which has twice the number of graphics cores, nor did the Stonestown Apple Store have it on display.
Summarizing the timings: The M1 Pro CPU seems about the same speed as the M1, while the GPU is twice as fast.
time open 3j3q (best of 3 tries with close command after each)
ARM 4.0 seconds
Intel 6.0
addh on 7n30 (150,000 atom ribosome)
ARM 16.9 seconds
Intel 28.8
surface on 7n30 (time surface #1, fastest of 3 times)
ARM 8.0 seconds
Intel 9.5
Rendering surface 7n30 full lighting (windowsize 1024 1024 non-retina or 512x512 retina); view ; light full ; gra rate 1 ; roll) most frequent rate over one minute.
ARM (CPU integrated graphics) 25.7 frames/sec
Intel 25.0
7n30 nucleotides tube/slab shape box (time nuc #1 tube/slab)
ARM 6.6 seconds
Intel 13.0
Map contour calculation EMDB 22657 apoferritin 420x420x420, (vol #1 step 1 level .01 ; view ; vol #1 step 1 level .02 ; time vol #1 level .01)
ARM 0.67 sec
Intel 1.02
comment:20 by , 4 years ago
I made a talk for the CZI Essential Open Source Software annual meeting on porting to Apple M1 CPU
https://www.rbvi.ucsf.edu/chimerax/data/czi-nov2021/apple_m1.html
comment:21 by , 4 years ago
Native apps for the Apple M1 CPU must be signed in order to run. An adhoc signature can be used that has no certificate and the compiler adds this by default, apparently inside the executable. The codesign command reveals this, on my ARM64 development build:
codesign -dvvv ChimeraX.app Executable=/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/MacOS/ChimeraX Identifier=ChimeraX Format=app bundle with Mach-O thin (arm64) CodeDirectory v=20400 size=513 flags=0x20002(adhoc,linker-signed) hashes=13+0 location=embedded Hash type=sha256 size=32 CandidateCDHash sha256=7ee198a5f3d238248eab5b3b1b5cba630a6baece CandidateCDHashFull sha256=7ee198a5f3d238248eab5b3b1b5cba630a6baece0e9e89b409ca53a8b529aa40 Hash choices=sha256 CMSDigest=7ee198a5f3d238248eab5b3b1b5cba630a6baece0e9e89b409ca53a8b529aa40 CMSDigestType=2 CDHash=7ee198a5f3d238248eab5b3b1b5cba630a6baece Signature=adhoc Info.plist=not bound TeamIdentifier=not set Sealed Resources=none Internal requirements=none
If I download a dmg with this adhoc signed app onto an M1 Mac I can copy the app to the Desktop but when I run it is says it is "damaged" and offers only to move it to the trash. To get it to run I can remove the HFS file system attributes from the dmg with
xattr -c chimerax.dmg
and then the extracted copy runs without any complaints, not even a warning about not being checked by Apple.
comment:22 by , 4 years ago
Cc: | added |
---|---|
Owner: | changed from | to
Since I've been tasked with the CZI grant which includes porting ChimeraX to Apple Silicon, I'm reassigning this ticket to myself and adding Tom as a CC'd party, though any comments from any person CC'd on this ticket are always welcome.
Since the last update I've whitelisted scipy and matplotlib, both now have wheels for M1.
imagecodecs, netCDF4, and tables are still troublesome.
Ambertools21 and OpenMM both supposedly have releases which support M1.
Work in progress is on this branch on GitHub.
comment:23 by , 4 years ago
While building ChimeraX without imagecodecs, netCDF4, and tables with the intent to release such a build is obviously not a good idea, it is possible to build (the Qt6 version of) ChimeraX on Apple Silicon currently with just those three packages excluded in prereqs/pips. Pasted below is a copy of the environment from the bug reporter, as well as the output of the Apple crash reporter after calling kill -6
on ChimeraX's pid.
Platform: macOS-12.2.1-arm64-arm-64bit
Env:
OpenGL version: 4.1 Metal - 76.3 OpenGL renderer: Apple M1 Pro OpenGL vendor: Apple Locale: UTF-8 Qt version: PyQt6 6.2.2, Qt 6.2.2 Qt platform: cocoa Hardware: Hardware Overview: Model Name: MacBook Pro Model Identifier: MacBookPro18,1 Chip: Apple M1 Pro Total Number of Cores: 10 (8 performance and 2 efficiency) Memory: 16 GB System Firmware Version: 7429.81.3 OS Loader Version: 7429.81.3 Software: System Software Overview: System Version: macOS 12.2.1 (21D62) Kernel Version: Darwin 21.3.0 Time since boot: 12 days 1:00 Graphics/Displays: Apple M1 Pro: Chipset Model: Apple M1 Pro Type: GPU Bus: Built-In Total Number of Cores: 16 Vendor: Apple (0x106b) Metal Family: Supported, Metal GPUFamily Apple 7 Displays: Color LCD: Display Type: Built-in Liquid Retina XDR Display Resolution: 3456 x 2234 Retina Main Display: Yes Mirror: Off Online: Yes Automatically Adjust Brightness: No Connection Type: Internal Installed Packages: alabaster: 0.7.12 appdirs: 1.4.4 appnope: 0.1.2 Babel: 2.9.1 backcall: 0.2.0 blockdiag: 3.0.0 certifi: 2021.5.30 charset-normalizer: 2.0.12 ChimeraX-AddCharge: 1.2.3 ChimeraX-AddH: 2.1.11 ChimeraX-AlignmentAlgorithms: 2.0 ChimeraX-AlignmentHdrs: 3.2.1 ChimeraX-AlignmentMatrices: 2.0 ChimeraX-Alignments: 2.2.3 ChimeraX-AlphaFold: 1.0 ChimeraX-AltlocExplorer: 1.0.1 ChimeraX-AmberInfo: 1.0 ChimeraX-Arrays: 1.0 ChimeraX-Atomic: 1.36.2 ChimeraX-AtomicLibrary: 6.0.1 ChimeraX-AtomSearch: 2.0 ChimeraX-AtomSearchLibrary: 1.0 ChimeraX-AxesPlanes: 2.1 ChimeraX-BasicActions: 1.1 ChimeraX-BILD: 1.0 ChimeraX-BlastProtein: 2.0 ChimeraX-BondRot: 2.0 ChimeraX-BugReporter: 1.0 ChimeraX-BuildStructure: 2.6.1 ChimeraX-Bumps: 1.0 ChimeraX-BundleBuilder: 1.1 ChimeraX-ButtonPanel: 1.0 ChimeraX-CageBuilder: 1.0 ChimeraX-CellPack: 1.0 ChimeraX-Centroids: 1.2 ChimeraX-ChemGroup: 2.0 ChimeraX-Clashes: 2.2.2 ChimeraX-ColorActions: 1.0 ChimeraX-ColorGlobe: 1.0 ChimeraX-ColorKey: 1.5.1 ChimeraX-CommandLine: 1.2.1 ChimeraX-ConnectStructure: 2.0 ChimeraX-Contacts: 1.0 ChimeraX-Core: 1.4.dev202202240543 ChimeraX-CoreFormats: 1.1 ChimeraX-coulombic: 1.3.2 ChimeraX-Crosslinks: 1.0 ChimeraX-Crystal: 1.0 ChimeraX-CrystalContacts: 1.0 ChimeraX-DataFormats: 1.2.2 ChimeraX-Dicom: 1.0 ChimeraX-DistMonitor: 1.1.5 ChimeraX-Dssp: 2.0 ChimeraX-ExperimentalCommands: 1.0 ChimeraX-FileHistory: 1.0 ChimeraX-FunctionKey: 1.0 ChimeraX-Geometry: 1.1 ChimeraX-gltf: 1.0 ChimeraX-Graphics: 1.1 ChimeraX-Hbonds: 2.1.2 ChimeraX-Help: 1.2 ChimeraX-HKCage: 1.3 ChimeraX-IHM: 1.1 ChimeraX-ImageFormats: 1.2 ChimeraX-IMOD: 1.0 ChimeraX-IO: 1.0.1 ChimeraX-ItemsInspection: 1.0 ChimeraX-Label: 1.1 ChimeraX-ListInfo: 1.1.1 ChimeraX-Log: 1.1.5 ChimeraX-LookingGlass: 1.1 ChimeraX-Maestro: 1.8.1 ChimeraX-Map: 1.1 ChimeraX-MapData: 2.0 ChimeraX-MapEraser: 1.0 ChimeraX-MapFilter: 2.0 ChimeraX-MapFit: 2.0 ChimeraX-MapSeries: 2.1 ChimeraX-Markers: 1.0 ChimeraX-Mask: 1.0 ChimeraX-MatchMaker: 2.0.6 ChimeraX-MDcrds: 2.6 ChimeraX-MedicalToolbar: 1.0.1 ChimeraX-Meeting: 1.0 ChimeraX-MLP: 1.1 ChimeraX-mmCIF: 2.7 ChimeraX-MMTF: 2.1 ChimeraX-Modeller: 1.5.1 ChimeraX-ModelPanel: 1.3.2 ChimeraX-ModelSeries: 1.0 ChimeraX-Mol2: 2.0 ChimeraX-Morph: 1.0 ChimeraX-MouseModes: 1.1 ChimeraX-Movie: 1.0 ChimeraX-Neuron: 1.0 ChimeraX-Nucleotides: 2.0.2 ChimeraX-OpenCommand: 1.8 ChimeraX-PDB: 2.6.6 ChimeraX-PDBBio: 1.0 ChimeraX-PDBLibrary: 1.0.2 ChimeraX-PDBMatrices: 1.0 ChimeraX-PickBlobs: 1.0 ChimeraX-Positions: 1.0 ChimeraX-PresetMgr: 1.1 ChimeraX-PubChem: 2.1 ChimeraX-ReadPbonds: 1.0.1 ChimeraX-Registration: 1.1 ChimeraX-RemoteControl: 1.0 ChimeraX-ResidueFit: 1.0 ChimeraX-RestServer: 1.1 ChimeraX-RNALayout: 1.0 ChimeraX-RotamerLibMgr: 2.0.1 ChimeraX-RotamerLibsDunbrack: 2.0 ChimeraX-RotamerLibsDynameomics: 2.0 ChimeraX-RotamerLibsRichardson: 2.0 ChimeraX-SaveCommand: 1.5 ChimeraX-SchemeMgr: 1.0 ChimeraX-SDF: 2.0 ChimeraX-Segger: 1.0 ChimeraX-Segment: 1.0 ChimeraX-SelInspector: 1.0 ChimeraX-SeqView: 2.4.6 ChimeraX-Shape: 1.0.1 ChimeraX-Shell: 1.0 ChimeraX-Shortcuts: 1.1 ChimeraX-ShowAttr: 1.0 ChimeraX-ShowSequences: 1.0 ChimeraX-SideView: 1.0 ChimeraX-Smiles: 2.1 ChimeraX-SmoothLines: 1.0 ChimeraX-SpaceNavigator: 1.0 ChimeraX-StdCommands: 1.7.7 ChimeraX-STL: 1.0 ChimeraX-Storm: 1.0 ChimeraX-StructMeasure: 1.0.1 ChimeraX-Struts: 1.0.1 ChimeraX-Surface: 1.0 ChimeraX-SwapAA: 2.0 ChimeraX-SwapRes: 2.1.1 ChimeraX-TapeMeasure: 1.0 ChimeraX-Test: 1.0 ChimeraX-Toolbar: 1.1 ChimeraX-ToolshedUtils: 1.2.1 ChimeraX-Tug: 1.0 ChimeraX-UI: 1.16.1 ChimeraX-uniprot: 2.2 ChimeraX-UnitCell: 1.0 ChimeraX-ViewDockX: 1.1.1 ChimeraX-VIPERdb: 1.0 ChimeraX-Vive: 1.1 ChimeraX-VolumeMenu: 1.0 ChimeraX-VTK: 1.0 ChimeraX-WavefrontOBJ: 1.0 ChimeraX-WebCam: 1.0 ChimeraX-WebServices: 1.0 ChimeraX-Zone: 1.0 colorama: 0.4.4 cxservices: 1.1 cycler: 0.11.0 Cython: 0.29.26 debugpy: 1.5.1 decorator: 5.1.1 docutils: 0.17.1 entrypoints: 0.4 filelock: 3.4.2 fonttools: 4.29.1 funcparserlib: 1.0.0a0 grako: 3.16.5 html2text: 2020.1.16 idna: 3.3 ihm: 0.26 imagesize: 1.3.0 ipykernel: 6.6.1 ipython: 7.31.1 ipython-genutils: 0.2.0 jedi: 0.18.1 Jinja2: 3.0.3 jupyter-client: 7.1.0 jupyter-core: 4.9.2 kiwisolver: 1.3.2 line-profiler: 3.4.0 lxml: 4.7.1 lz4: 3.1.10 MarkupSafe: 2.1.0 matplotlib: 3.5.1 matplotlib-inline: 0.1.3 msgpack: 1.0.3 nest-asyncio: 1.5.4 networkx: 2.6.3 numpy: 1.22.1 openvr: 1.16.802 packaging: 21.0 ParmEd: 3.4.3 parso: 0.8.3 pexpect: 4.8.0 pickleshare: 0.7.5 Pillow: 9.0.0 pip: 21.3.1 pkginfo: 1.8.2 prompt-toolkit: 3.0.28 psutil: 5.9.0 ptyprocess: 0.7.0 pycollada: 0.7.2 pydicom: 2.2.2 Pygments: 2.11.2 PyOpenGL: 3.1.5 PyOpenGL-accelerate: 3.1.5 pyparsing: 3.0.7 PyQt6: 6.2.2 PyQt6-Qt6: 6.2.3 PyQt6-sip: 13.2.0 PyQt6-WebEngine: 6.2.1 PyQt6-WebEngine-Qt6: 6.2.3 python-dateutil: 2.8.2 pytz: 2021.3 pyzmq: 22.3.0 qtconsole: 5.2.2 QtPy: 2.0.1 requests: 2.27.1 scipy: 1.7.3 setuptools: 59.8.0 six: 1.16.0 snowballstemmer: 2.2.0 sortedcontainers: 2.4.0 Sphinx: 4.3.2 sphinx-autodoc-typehints: 1.15.2 sphinxcontrib-applehelp: 1.0.2 sphinxcontrib-blockdiag: 3.0.0 sphinxcontrib-devhelp: 1.0.2 sphinxcontrib-htmlhelp: 2.0.0 sphinxcontrib-jsmath: 1.0.1 sphinxcontrib-qthelp: 1.0.3 sphinxcontrib-serializinghtml: 1.1.5 suds-community: 1.0.0 tifffile: 2021.11.2 tinyarray: 1.2.4 tornado: 6.1 traitlets: 5.1.1 urllib3: 1.26.8 wcwidth: 0.2.5 webcolors: 1.11.1 wheel: 0.37.1 wheel-filename: 1.3.0
Apple crash report:
------------------------------------- Translated Report (Full Report Below) ------------------------------------- Process: ChimeraX [90267] Path: /Users/USER/*/ChimeraX.app/Contents/MacOS/ChimeraX Identifier: edu.ucsf.cgl.ChimeraX Version: 1.4.0 (1.4.0.0) Code Type: ARM-64 (Native) Parent Process: launchd [1] User ID: 501 Date/Time: 2022-03-02 15:22:14.3894 -0800 OS Version: macOS 12.2.1 (21D62) Report Version: 12 Anonymous UUID: 5C21DB81-5826-C051-F2C6-A1924F9AF25A Sleep/Wake UUID: DC92BC9B-114F-40A4-A50E-54EB9581075D Time Awake Since Boot: 120000 seconds Time Since Wake: 702 seconds System Integrity Protection: enabled Crashed Thread: 0 CrBrowserMain Dispatch queue: com.apple.main-thread Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Kernel Triage: VM - pmap_enter failed with resource shortage VM - pmap_enter failed with resource shortage VM - pmap_enter failed with resource shortage VM - pmap_enter failed with resource shortage VM - pmap_enter failed with resource shortage Thread 0 Crashed:: CrBrowserMain Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x1b12099b8 __pthread_kill + 8 1 libsystem_pthread.dylib 0x1b123ceb0 pthread_kill + 288 2 libsystem_c.dylib 0x1b1142ca4 raise + 32 3 libsystem_platform.dylib 0x1b12544e4 _sigtramp + 56 4 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 5 CoreFoundation 0x1b1308ed8 __CFRunLoopServiceMachPort + 372 6 CoreFoundation 0x1b1307390 __CFRunLoopRun + 1212 7 CoreFoundation 0x1b1306734 CFRunLoopRunSpecific + 600 8 HIToolbox 0x1b9e9ef68 RunCurrentEventLoopInMode + 292 9 HIToolbox 0x1b9e9ecdc ReceiveNextEventCommon + 552 10 HIToolbox 0x1b9e9ea9c _BlockUntilNextEventMatchingListInModeWithFilter + 72 11 AppKit 0x1b3e5d000 _DPSNextEvent + 844 12 AppKit 0x1b3e5b8a4 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1332 13 AppKit 0x1b3e4d9b4 -[NSApplication run] + 596 14 libqcocoa.dylib 0x1206acfb8 0x120698000 + 85944 15 QtCore 0x11d104b3c QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 500 16 QtCore 0x11d0fbe88 QCoreApplication::exec() + 128 17 QtWidgets.abi3.so 0x120047be8 meth_QApplication_exec(_object*, _object*) + 96 18 Python 0x105969dd0 cfunction_call + 168 19 Python 0x1059285cc _PyObject_MakeTpCall + 360 20 Python 0x1059fc544 call_function + 512 21 Python 0x1059f9e58 _PyEval_EvalFrameDefault + 23316 22 Python 0x105928dc4 function_code_fastcall + 112 23 Python 0x10592ad5c method_vectorcall + 168 24 Python 0x1059fc4e4 call_function + 416 25 Python 0x1059f9e58 _PyEval_EvalFrameDefault + 23316 26 Python 0x1059fd45c _PyEval_EvalCode + 3072 27 Python 0x105928d48 _PyFunction_Vectorcall + 256 28 Python 0x1059fc4e4 call_function + 416 29 Python 0x1059f9ed4 _PyEval_EvalFrameDefault + 23440 30 Python 0x1059fd45c _PyEval_EvalCode + 3072 31 Python 0x1059f427c PyEval_EvalCode + 80 32 Python 0x1059f1058 builtin_exec + 672 33 Python 0x1059694f8 cfunction_vectorcall_FASTCALL + 248 34 Python 0x1059fc4e4 call_function + 416 35 Python 0x1059f9ed4 _PyEval_EvalFrameDefault + 23440 36 Python 0x1059fd45c _PyEval_EvalCode + 3072 37 Python 0x105928d48 _PyFunction_Vectorcall + 256 38 Python 0x1059fc4e4 call_function + 416 39 Python 0x1059f9ed4 _PyEval_EvalFrameDefault + 23440 40 Python 0x1059fd45c _PyEval_EvalCode + 3072 41 Python 0x105928d48 _PyFunction_Vectorcall + 256 42 Python 0x105a57408 pymain_run_module + 200 43 Python 0x105a56a2c Py_RunMain + 744 44 Python 0x105a572b8 pymain_main + 340 45 Python 0x105a57158 Py_Main + 36 46 ChimeraX 0x104e07dcc main + 128 47 dyld 0x1050f10f4 start + 520 Thread 1: 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 libopenblas64_.0.dylib 0x1078ecef8 blas_thread_server + 360 3 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 4 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 2: 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 libopenblas64_.0.dylib 0x1078ecef8 blas_thread_server + 360 3 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 4 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 3: 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 libopenblas64_.0.dylib 0x1078ecef8 blas_thread_server + 360 3 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 4 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 4: 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 libopenblas64_.0.dylib 0x1078ecef8 blas_thread_server + 360 3 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 4 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 5: 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 libopenblas64_.0.dylib 0x1078ecef8 blas_thread_server + 360 3 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 4 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 6: 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 libopenblas64_.0.dylib 0x1078ecef8 blas_thread_server + 360 3 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 4 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 7: 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 libopenblas64_.0.dylib 0x1078ecef8 blas_thread_server + 360 3 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 4 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 8: 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 libopenblas64_.0.dylib 0x1078ecef8 blas_thread_server + 360 3 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 4 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 9: 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 libopenblas64_.0.dylib 0x1078ecef8 blas_thread_server + 360 3 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 4 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 10: 0 libsystem_pthread.dylib 0x1b1238010 start_wqthread + 0 Thread 11: 0 libsystem_pthread.dylib 0x1b1238010 start_wqthread + 0 Thread 12: 0 libsystem_pthread.dylib 0x1b1238010 start_wqthread + 0 Thread 13:: ThreadPoolServiceThread 0 libsystem_kernel.dylib 0x1b120ca48 kevent64 + 8 1 QtWebEngineCore 0x176cdba20 0x1740f0000 + 46053920 2 QtWebEngineCore 0x176cdb958 0x1740f0000 + 46053720 3 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 4 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 5 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 6 QtWebEngineCore 0x176c7c318 0x1740f0000 + 45663000 7 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 8 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 9 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 10 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 14:: ThreadPoolForegroundWorker 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176c87650 0x1740f0000 + 45708880 4 QtWebEngineCore 0x176c880b0 0x1740f0000 + 45711536 5 QtWebEngineCore 0x176c87d08 0x1740f0000 + 45710600 6 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 7 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 8 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 15:: ThreadPoolBackgroundWorker 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176c87650 0x1740f0000 + 45708880 4 QtWebEngineCore 0x176c87e6c 0x1740f0000 + 45710956 5 QtWebEngineCore 0x176c87c84 0x1740f0000 + 45710468 6 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 7 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 8 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 16:: Chrome_IOThread 0 libsystem_kernel.dylib 0x1b120ca48 kevent64 + 8 1 QtWebEngineCore 0x176cdba20 0x1740f0000 + 46053920 2 QtWebEngineCore 0x176cdb958 0x1740f0000 + 46053720 3 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 4 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 5 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 6 QtWebEngineCore 0x17adfe70c 0x1740f0000 + 114353932 7 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 8 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 9 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 10 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 17:: NetworkConfigWatcher 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176cbfaf8 0x1740f0000 + 45939448 4 QtWebEngineCore 0x176c0ddd8 0x1740f0000 + 45211096 5 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 6 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 7 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 8 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 9 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 10 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 11 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 18:: ThreadPoolForegroundWorker 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176c87650 0x1740f0000 + 45708880 4 QtWebEngineCore 0x176c880b0 0x1740f0000 + 45711536 5 QtWebEngineCore 0x176c87d08 0x1740f0000 + 45710600 6 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 7 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 8 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 19:: ThreadPoolForegroundWorker 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176c87650 0x1740f0000 + 45708880 4 QtWebEngineCore 0x176c880b0 0x1740f0000 + 45711536 5 QtWebEngineCore 0x176c87d08 0x1740f0000 + 45710600 6 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 7 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 8 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 20:: ThreadPoolForegroundWorker 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176c87650 0x1740f0000 + 45708880 4 QtWebEngineCore 0x176c87e6c 0x1740f0000 + 45710956 5 QtWebEngineCore 0x176c87d08 0x1740f0000 + 45710600 6 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 7 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 8 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 21:: CompositorTileWorker1 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 QtWebEngineCore 0x176cb83a0 0x1740f0000 + 45908896 3 QtWebEngineCore 0x1785d6f48 0x1740f0000 + 72249160 4 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 5 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 6 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 22:: Chrome_InProcGpuThread 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176cbfaf8 0x1740f0000 + 45939448 4 QtWebEngineCore 0x176c0ddd8 0x1740f0000 + 45211096 5 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 6 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 7 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 8 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 9 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 10 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 11 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 23:: Chrome_ChildIOThread 0 libsystem_kernel.dylib 0x1b120ca48 kevent64 + 8 1 QtWebEngineCore 0x176cdba20 0x1740f0000 + 46053920 2 QtWebEngineCore 0x176cdb958 0x1740f0000 + 46053720 3 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 4 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 5 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 6 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 7 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 8 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 9 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 24:: NetworkConfigWatcher 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176cbfaf8 0x1740f0000 + 45939448 4 QtWebEngineCore 0x176c0ddd8 0x1740f0000 + 45211096 5 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 6 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 7 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 8 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 9 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 10 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 11 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 25:: VizCompositorThread 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176cbfaf8 0x1740f0000 + 45939448 4 QtWebEngineCore 0x176c0ddd8 0x1740f0000 + 45211096 5 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 6 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 7 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 8 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 9 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 10 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 11 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 26:: NetworkService 0 libsystem_kernel.dylib 0x1b120ca48 kevent64 + 8 1 QtWebEngineCore 0x176cdba20 0x1740f0000 + 46053920 2 QtWebEngineCore 0x176cdb958 0x1740f0000 + 46053720 3 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 4 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 5 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 6 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 7 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 8 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 9 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 27:: NetworkConfigWatcher 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176cbfaf8 0x1740f0000 + 45939448 4 QtWebEngineCore 0x176c0ddd8 0x1740f0000 + 45211096 5 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 6 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 7 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 8 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 9 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 10 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 11 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 28:: ThreadPoolSingleThreadForegroundBlocking0 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176cbfaf8 0x1740f0000 + 45939448 4 QtWebEngineCore 0x176c87640 0x1740f0000 + 45708864 5 QtWebEngineCore 0x176c880b0 0x1740f0000 + 45711536 6 QtWebEngineCore 0x176c87d60 0x1740f0000 + 45710688 7 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 8 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 9 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 29:: Thread (pooled) 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 QtCore 0x11d263758 0x11d06c000 + 2062168 3 QtCore 0x11d263410 0x11d06c000 + 2061328 4 QtCore 0x11d263350 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108 5 QtCore 0x11d25dc50 0x11d06c000 + 2038864 6 QtCore 0x11d258ce4 0x11d06c000 + 2018532 7 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 8 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 30:: Thread (pooled) 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 QtCore 0x11d263758 0x11d06c000 + 2062168 3 QtCore 0x11d263410 0x11d06c000 + 2061328 4 QtCore 0x11d263350 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108 5 QtCore 0x11d25dc50 0x11d06c000 + 2038864 6 QtCore 0x11d258ce4 0x11d06c000 + 2018532 7 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 8 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 31:: Thread (pooled) 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 QtCore 0x11d263758 0x11d06c000 + 2062168 3 QtCore 0x11d263410 0x11d06c000 + 2061328 4 QtCore 0x11d263350 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108 5 QtCore 0x11d25dc50 0x11d06c000 + 2038864 6 QtCore 0x11d258ce4 0x11d06c000 + 2018532 7 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 8 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 32:: Thread (pooled) 0 libsystem_kernel.dylib 0x1b12050c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b123d808 _pthread_cond_wait + 1228 2 QtCore 0x11d263758 0x11d06c000 + 2062168 3 QtCore 0x11d263410 0x11d06c000 + 2061328 4 QtCore 0x11d263350 QWaitCondition::wait(QMutex*, QDeadlineTimer) + 108 5 QtCore 0x11d25dc50 0x11d06c000 + 2038864 6 QtCore 0x11d258ce4 0x11d06c000 + 2018532 7 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 8 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 33:: NetworkConfigWatcher 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176cbfaf8 0x1740f0000 + 45939448 4 QtWebEngineCore 0x176c0ddd8 0x1740f0000 + 45211096 5 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 6 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 7 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 8 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 9 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 10 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 11 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 34: 0 libsystem_pthread.dylib 0x1b1238010 start_wqthread + 0 Thread 35: 0 libsystem_pthread.dylib 0x1b1238010 start_wqthread + 0 Thread 36: 0 libsystem_pthread.dylib 0x1b1238010 start_wqthread + 0 Thread 37: 0 libsystem_pthread.dylib 0x1b1238010 start_wqthread + 0 Thread 38:: com.apple.NSEventThread 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 CoreFoundation 0x1b1308ed8 __CFRunLoopServiceMachPort + 372 3 CoreFoundation 0x1b1307390 __CFRunLoopRun + 1212 4 CoreFoundation 0x1b1306734 CFRunLoopRunSpecific + 600 5 AppKit 0x1b3fc9fb0 _NSEventThread + 196 6 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 7 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 39:: MemoryInfra 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176cbfaf8 0x1740f0000 + 45939448 4 QtWebEngineCore 0x176c0ddd8 0x1740f0000 + 45211096 5 QtWebEngineCore 0x176c701f0 0x1740f0000 + 45613552 6 QtWebEngineCore 0x176c3a140 0x1740f0000 + 45392192 7 QtWebEngineCore 0x176c93098 0x1740f0000 + 45756568 8 QtWebEngineCore 0x176c93244 0x1740f0000 + 45756996 9 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 10 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 11 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 40:: ThreadPoolSingleThreadSharedBackgroundBlocking1 0 libsystem_kernel.dylib 0x1b1201954 mach_msg_trap + 8 1 libsystem_kernel.dylib 0x1b1201d00 mach_msg + 76 2 QtWebEngineCore 0x176cbfd10 0x1740f0000 + 45939984 3 QtWebEngineCore 0x176cbfaf8 0x1740f0000 + 45939448 4 QtWebEngineCore 0x176c87640 0x1740f0000 + 45708864 5 QtWebEngineCore 0x176c87e6c 0x1740f0000 + 45710956 6 QtWebEngineCore 0x176c87cb0 0x1740f0000 + 45710512 7 QtWebEngineCore 0x176cb982c 0x1740f0000 + 45914156 8 libsystem_pthread.dylib 0x1b123d240 _pthread_start + 148 9 libsystem_pthread.dylib 0x1b1238024 thread_start + 8 Thread 0 crashed with ARM Thread State (64-bit): x0: 0x0000000000000000 x1: 0x0000000000000000 x2: 0x0000000000000001 x3: 0x00000001b12517cc x4: 0x0000000128047c18 x5: 0x2fc98ea7e8801683 x6: 0x0000000000000000 x7: 0x000060000109cea0 x8: 0xbe820a395a036ed2 x9: 0xbe820a385f152b52 x10: 0x0000000000000000 x11: 0x00000001052c69c0 x12: 0x00000000016e3600 x13: 0x000000000063578d x14: 0x0000000000000001 x15: 0x0000100000001002 x16: 0x0000000000000148 x17: 0x000000020ba73530 x18: 0x0000000128483940 x19: 0x0000000000000006 x20: 0x0000000105164580 x21: 0x0000000000000103 x22: 0x0000000000000c00 x23: 0x000000016aff8d20 x24: 0x0000000007000806 x25: 0x0000000000000000 x26: 0x0000000007000806 x27: 0x0000000000004a03 x28: 0x0000000000004a03 fp: 0x0000000128047b50 lr: 0x00000001b123ceb0 sp: 0x0000000128047b30 pc: 0x00000001b12099b8 cpsr: 0x40001000 far: 0x0000000128047bb0 esr: 0x56000080 Address size fault Binary Images: 0x1b1200000 - 0x1b1235fff libsystem_kernel.dylib (*) <384945e6-dd71-37e5-9a3d-84fff14a1e60> /usr/lib/system/libsystem_kernel.dylib 0x1b1236000 - 0x1b1242fff libsystem_pthread.dylib (*) <f7b2eccf-e6f1-3109-ae81-9028c0b8332a> /usr/lib/system/libsystem_pthread.dylib 0x1b1101000 - 0x1b1181fff libsystem_c.dylib (*) <0dbc8b95-0037-3725-a769-0c772c293488> /usr/lib/system/libsystem_c.dylib 0x1b1250000 - 0x1b1257fff libsystem_platform.dylib (*) <49cf1536-27e5-3a34-9724-d75552cbab56> /usr/lib/system/libsystem_platform.dylib 0x1b1284000 - 0x1b17c7fff com.apple.CoreFoundation (6.9) <35473de6-c433-332c-aee0-013fd5f6d4fd> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 0x1b9e6c000 - 0x1ba19bfff com.apple.HIToolbox (2.1.1) <b5a3fe9a-833b-3697-ac9c-1e9e8eb11bac> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox 0x1b3e1b000 - 0x1b4cd1fff com.apple.AppKit (6.9) <8701760d-31b6-37eb-be77-ffb39921dd22> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit 0x120698000 - 0x12072bfff libqcocoa.dylib (*) <bfcf26c7-0cc9-3ee3-a488-8647073e4fda> /Users/USER/*/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PyQt6/Qt6/plugins/platforms/libqcocoa.dylib 0x11d06c000 - 0x11d4b3fff QtCore (*) <8e087af8-99fe-368f-a2f5-8cac45da755d> /Users/USER/*/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PyQt6/Qt6/lib/QtCore.framework/Versions/A/QtCore 0x11fdec000 - 0x1200cbfff QtWidgets.abi3.so (*) <cb6bf878-5499-3497-a87c-76b83c9156d6> /Users/USER/*/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PyQt6/QtWidgets.abi3.so 0x1058e8000 - 0x105b4ffff org.python.python (3.9.6, (c) 2001-2019 Python Software Foundation.) <1d0528e1-f5ed-3747-904f-70bf63e4e283> /Users/USER/*/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/Python 0x104e04000 - 0x104e07fff edu.ucsf.cgl.ChimeraX (1.4.0) <14d0717f-ca24-3ba7-b277-d7edabf09fb5> /Users/USER/*/ChimeraX.app/Contents/MacOS/ChimeraX 0x1050ec000 - 0x10514bfff dyld (*) <d21a73ea-79cd-36eb-8ac9-2c5cf5181a27> /usr/lib/dyld 0x107784000 - 0x1089cbfff libopenblas64_.0.dylib (*) <0672674f-0fbf-3245-8fec-358e42c77be2> /Users/USER/*/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/numpy/.dylibs/libopenblas64_.0.dylib 0x1740f0000 - 0x17c34bfff QtWebEngineCore (*) <cfa5ae29-512c-39df-a082-53b32ac7d003> /Users/USER/*/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PyQt6/Qt6/lib/QtWebEngineCore.framework/Versions/A/QtWebEngineCore External Modification Summary: Calls made by other processes targeting this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by all processes on this machine: task_for_pid: 0 thread_create: 0 thread_set_state: 0 VM Region Summary: ReadOnly portion of Libraries: Total=1.2G resident=0K(0%) swapped_out_or_unallocated=1.2G(100%) Writable regions: Total=1.9G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.9G(100%) VIRTUAL REGION REGION TYPE SIZE COUNT (non-coalesced) =========== ======= ======= Accelerate framework 384K 3 Activity Tracing 256K 1 CG backing stores 4032K 4 CG image 96K 3 ColorSync 608K 26 CoreAnimation 208K 12 CoreGraphics 32K 2 CoreUI image data 2576K 16 Foundation 16K 1 Kernel Alloc Once 32K 1 MALLOC 333.5M 67 MALLOC guard page 192K 9 MALLOC_MEDIUM (reserved) 688.0M 6 reserved VM address space (unallocated) MALLOC_NANO (reserved) 384.0M 1 reserved VM address space (unallocated) Mach message 64K 2 OpenGL GLSL 384K 4 STACK GUARD 640K 40 Stack 171.4M 41 Stack Guard 56.0M 1 VM_ALLOCATE 137.7M 205 VM_ALLOCATE (reserved) 224.0M 1 reserved VM address space (unallocated) __AUTH 2570K 308 __AUTH_CONST 19.7M 499 __DATA 23.5M 602 __DATA_CONST 25.9M 614 __DATA_DIRTY 1787K 215 __FONT_DATA 4K 1 __GLSLBUILTINS 5176K 1 __LINKEDIT 599.4M 114 __OBJC_CONST 3569K 273 __OBJC_RO 82.1M 1 __OBJC_RW 3104K 1 __TEXT 676.6M 632 __UNICODE 588K 1 dyld private memory 1184K 3 mapped file 180.7M 45 shared memory 3200K 26 =========== ======= ======= TOTAL 3.5G 3782 TOTAL, minus reserved VM space 2.3G 3782 ----------- Full Report ----------- {"app_name":"ChimeraX","timestamp":"2022-03-02 15:22:23.00 -0800","app_version":"1.4.0","slice_uuid":"14d0717f-ca24-3ba7-b277-d7edabf09fb5","build_version":"1.4.0.0","platform":1,"bundleID":"edu.ucsf.cgl.ChimeraX","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.2.1 (21D62)","incident_id":"E2B4CBA8-5813-45D7-8CCC-5D6BBEFFA21D","name":"ChimeraX"} { "uptime" : 120000, "procLaunch" : "2022-03-02 15:21:58.7297 -0800", "procRole" : "Background", "version" : 2, "userID" : 501, "deployVersion" : 210, "modelCode" : "MacBookPro18,1", "procStartAbsTime" : 3043901702513, "coalitionID" : 17965, "osVersion" : { "train" : "macOS 12.2.1", "build" : "21D62", "releaseType" : "User" }, "captureTime" : "2022-03-02 15:22:14.3894 -0800", "incident" : "E2B4CBA8-5813-45D7-8CCC-5D6BBEFFA21D", "bug_type" : "309", "pid" : 90267, "procExitAbsTime" : 3044277164177, "translated" : false, "cpuType" : "ARM-64", "procName" : "ChimeraX", "procPath" : "\/Users\/USER\/*\/ChimeraX.app\/Contents\/MacOS\/ChimeraX", "bundleInfo" : {"CFBundleShortVersionString":"1.4.0","CFBundleVersion":"1.4.0.0","CFBundleIdentifier":"edu.ucsf.cgl.ChimeraX"}, "storeInfo" : {"deviceIdentifierForVendor":"B3A2C5DA-D8C5-54F0-A3CA-1E2ED4DEC9C9","thirdParty":true}, "parentProc" : "launchd", "parentPid" : 1, "coalitionName" : "edu.ucsf.cgl.ChimeraX", "crashReporterKey" : "5C21DB81-5826-C051-F2C6-A1924F9AF25A", "wakeTime" : 702, "sleepWakeUUID" : "DC92BC9B-114F-40A4-A50E-54EB9581075D", "sip" : "enabled", "isCorpse" : 1, "exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"}, "ktriageinfo" : "VM - pmap_enter failed with resource shortage\nVM - pmap_enter failed with resource shortage\nVM - pmap_enter failed with resource shortage\nVM - pmap_enter failed with resource shortage\nVM - pmap_enter failed with resource shortage\n", "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0}, "faultingThread" : 0, "threads" : [{"triggered":true,"id":2327269,"threadState":{"x":[{"value":0},{"value":0},{"value":1},{"value":7266965452},{"value":4966349848},{"value":3443440241912845955},{"value":0},{"value":105553133686432},{"value":13727545855618281170},{"value":13727545851408362322},{"value":0},{"value":4381764032},{"value":24000000},{"value":6510477},{"value":1},{"value":17592186048514},{"value":328},{"value":8785442096},{"value":4970789184},{"value":6},{"value":4380312960,"symbolLocation":0,"symbol":"_main_thread"},{"value":259},{"value":3072},{"value":6090100000},{"value":117442566},{"value":0},{"value":117442566},{"value":18947},{"value":18947}],"flavor":"ARM_THREAD_STATE64","lr":{"value":7266881200},"cpsr":{"value":1073745920},"fp":{"value":4966349648},"sp":{"value":4966349616},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":7266671032,"matchesCrashFrame":1},"far":{"value":4966349744}},"name":"CrBrowserMain","queue":"com.apple.main-thread","frames":[{"imageOffset":39352,"symbol":"__pthread_kill","symbolLocation":8,"imageIndex":0},{"imageOffset":28336,"symbol":"pthread_kill","symbolLocation":288,"imageIndex":1},{"imageOffset":269476,"symbol":"raise","symbolLocation":32,"imageIndex":2},{"imageOffset":17636,"symbol":"_sigtramp","symbolLocation":56,"imageIndex":3},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":544472,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":372,"imageIndex":4},{"imageOffset":537488,"symbol":"__CFRunLoopRun","symbolLocation":1212,"imageIndex":4},{"imageOffset":534324,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":4},{"imageOffset":208744,"symbol":"RunCurrentEventLoopInMode","symbolLocation":292,"imageIndex":5},{"imageOffset":208092,"symbol":"ReceiveNextEventCommon","symbolLocation":552,"imageIndex":5},{"imageOffset":207516,"symbol":"_BlockUntilNextEventMatchingListInModeWithFilter","symbolLocation":72,"imageIndex":5},{"imageOffset":270336,"symbol":"_DPSNextEvent","symbolLocation":844,"imageIndex":6},{"imageOffset":264356,"symbol":"-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]","symbolLocation":1332,"imageIndex":6},{"imageOffset":207284,"symbol":"-[NSApplication run]","symbolLocation":596,"imageIndex":6},{"imageOffset":85944,"imageIndex":7},{"imageOffset":625468,"symbol":"QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)","symbolLocation":500,"imageIndex":8},{"imageOffset":589448,"symbol":"QCoreApplication::exec()","symbolLocation":128,"imageIndex":8},{"imageOffset":2472936,"symbol":"meth_QApplication_exec(_object*, _object*)","symbolLocation":96,"imageIndex":9},{"imageOffset":531920,"symbol":"cfunction_call","symbolLocation":168,"imageIndex":10},{"imageOffset":263628,"symbol":"_PyObject_MakeTpCall","symbolLocation":360,"imageIndex":10},{"imageOffset":1131844,"symbol":"call_function","symbolLocation":512,"imageIndex":10},{"imageOffset":1121880,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":23316,"imageIndex":10},{"imageOffset":265668,"symbol":"function_code_fastcall","symbolLocation":112,"imageIndex":10},{"imageOffset":273756,"symbol":"method_vectorcall","symbolLocation":168,"imageIndex":10},{"imageOffset":1131748,"symbol":"call_function","symbolLocation":416,"imageIndex":10},{"imageOffset":1121880,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":23316,"imageIndex":10},{"imageOffset":1135708,"symbol":"_PyEval_EvalCode","symbolLocation":3072,"imageIndex":10},{"imageOffset":265544,"symbol":"_PyFunction_Vectorcall","symbolLocation":256,"imageIndex":10},{"imageOffset":1131748,"symbol":"call_function","symbolLocation":416,"imageIndex":10},{"imageOffset":1122004,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":23440,"imageIndex":10},{"imageOffset":1135708,"symbol":"_PyEval_EvalCode","symbolLocation":3072,"imageIndex":10},{"imageOffset":1098364,"symbol":"PyEval_EvalCode","symbolLocation":80,"imageIndex":10},{"imageOffset":1085528,"symbol":"builtin_exec","symbolLocation":672,"imageIndex":10},{"imageOffset":529656,"symbol":"cfunction_vectorcall_FASTCALL","symbolLocation":248,"imageIndex":10},{"imageOffset":1131748,"symbol":"call_function","symbolLocation":416,"imageIndex":10},{"imageOffset":1122004,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":23440,"imageIndex":10},{"imageOffset":1135708,"symbol":"_PyEval_EvalCode","symbolLocation":3072,"imageIndex":10},{"imageOffset":265544,"symbol":"_PyFunction_Vectorcall","symbolLocation":256,"imageIndex":10},{"imageOffset":1131748,"symbol":"call_function","symbolLocation":416,"imageIndex":10},{"imageOffset":1122004,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":23440,"imageIndex":10},{"imageOffset":1135708,"symbol":"_PyEval_EvalCode","symbolLocation":3072,"imageIndex":10},{"imageOffset":265544,"symbol":"_PyFunction_Vectorcall","symbolLocation":256,"imageIndex":10},{"imageOffset":1504264,"symbol":"pymain_run_module","symbolLocation":200,"imageIndex":10},{"imageOffset":1501740,"symbol":"Py_RunMain","symbolLocation":744,"imageIndex":10},{"imageOffset":1503928,"symbol":"pymain_main","symbolLocation":340,"imageIndex":10},{"imageOffset":1503576,"symbol":"Py_Main","symbolLocation":36,"imageIndex":10},{"imageOffset":15820,"symbol":"main","symbolLocation":128,"imageIndex":11},{"imageOffset":20724,"symbol":"start","symbolLocation":520,"imageIndex":12}]},{"id":2327280,"frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":1478392,"symbol":"blas_thread_server","symbolLocation":360,"imageIndex":13},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327281,"frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":1478392,"symbol":"blas_thread_server","symbolLocation":360,"imageIndex":13},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327282,"frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":1478392,"symbol":"blas_thread_server","symbolLocation":360,"imageIndex":13},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327283,"frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":1478392,"symbol":"blas_thread_server","symbolLocation":360,"imageIndex":13},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327284,"frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":1478392,"symbol":"blas_thread_server","symbolLocation":360,"imageIndex":13},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327285,"frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":1478392,"symbol":"blas_thread_server","symbolLocation":360,"imageIndex":13},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327286,"frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":1478392,"symbol":"blas_thread_server","symbolLocation":360,"imageIndex":13},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327287,"frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":1478392,"symbol":"blas_thread_server","symbolLocation":360,"imageIndex":13},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327288,"frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":1478392,"symbol":"blas_thread_server","symbolLocation":360,"imageIndex":13},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327291,"frames":[{"imageOffset":8208,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":2327292,"frames":[{"imageOffset":8208,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":2327298,"frames":[{"imageOffset":8208,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":2327319,"name":"ThreadPoolServiceThread","frames":[{"imageOffset":51784,"symbol":"kevent64","symbolLocation":8,"imageIndex":0},{"imageOffset":46053920,"imageIndex":14},{"imageOffset":46053720,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":45663000,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327320,"name":"ThreadPoolForegroundWorker","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45708880,"imageIndex":14},{"imageOffset":45711536,"imageIndex":14},{"imageOffset":45710600,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327321,"name":"ThreadPoolBackgroundWorker","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45708880,"imageIndex":14},{"imageOffset":45710956,"imageIndex":14},{"imageOffset":45710468,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327322,"name":"Chrome_IOThread","frames":[{"imageOffset":51784,"symbol":"kevent64","symbolLocation":8,"imageIndex":0},{"imageOffset":46053920,"imageIndex":14},{"imageOffset":46053720,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":114353932,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327323,"name":"NetworkConfigWatcher","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45939448,"imageIndex":14},{"imageOffset":45211096,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327324,"name":"ThreadPoolForegroundWorker","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45708880,"imageIndex":14},{"imageOffset":45711536,"imageIndex":14},{"imageOffset":45710600,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327325,"name":"ThreadPoolForegroundWorker","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45708880,"imageIndex":14},{"imageOffset":45711536,"imageIndex":14},{"imageOffset":45710600,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327326,"name":"ThreadPoolForegroundWorker","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45708880,"imageIndex":14},{"imageOffset":45710956,"imageIndex":14},{"imageOffset":45710600,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327327,"name":"CompositorTileWorker1","frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":45908896,"imageIndex":14},{"imageOffset":72249160,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327328,"name":"Chrome_InProcGpuThread","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45939448,"imageIndex":14},{"imageOffset":45211096,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327329,"name":"Chrome_ChildIOThread","frames":[{"imageOffset":51784,"symbol":"kevent64","symbolLocation":8,"imageIndex":0},{"imageOffset":46053920,"imageIndex":14},{"imageOffset":46053720,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327330,"name":"NetworkConfigWatcher","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45939448,"imageIndex":14},{"imageOffset":45211096,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327332,"name":"VizCompositorThread","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45939448,"imageIndex":14},{"imageOffset":45211096,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327340,"name":"NetworkService","frames":[{"imageOffset":51784,"symbol":"kevent64","symbolLocation":8,"imageIndex":0},{"imageOffset":46053920,"imageIndex":14},{"imageOffset":46053720,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327341,"name":"NetworkConfigWatcher","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45939448,"imageIndex":14},{"imageOffset":45211096,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327344,"name":"ThreadPoolSingleThreadForegroundBlocking0","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45939448,"imageIndex":14},{"imageOffset":45708864,"imageIndex":14},{"imageOffset":45711536,"imageIndex":14},{"imageOffset":45710688,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327360,"name":"Thread (pooled)","frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":2062168,"imageIndex":8},{"imageOffset":2061328,"imageIndex":8},{"imageOffset":2061136,"symbol":"QWaitCondition::wait(QMutex*, QDeadlineTimer)","symbolLocation":108,"imageIndex":8},{"imageOffset":2038864,"imageIndex":8},{"imageOffset":2018532,"imageIndex":8},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327361,"name":"Thread (pooled)","frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":2062168,"imageIndex":8},{"imageOffset":2061328,"imageIndex":8},{"imageOffset":2061136,"symbol":"QWaitCondition::wait(QMutex*, QDeadlineTimer)","symbolLocation":108,"imageIndex":8},{"imageOffset":2038864,"imageIndex":8},{"imageOffset":2018532,"imageIndex":8},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327362,"name":"Thread (pooled)","frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":2062168,"imageIndex":8},{"imageOffset":2061328,"imageIndex":8},{"imageOffset":2061136,"symbol":"QWaitCondition::wait(QMutex*, QDeadlineTimer)","symbolLocation":108,"imageIndex":8},{"imageOffset":2038864,"imageIndex":8},{"imageOffset":2018532,"imageIndex":8},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327363,"name":"Thread (pooled)","frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":0},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":1},{"imageOffset":2062168,"imageIndex":8},{"imageOffset":2061328,"imageIndex":8},{"imageOffset":2061136,"symbol":"QWaitCondition::wait(QMutex*, QDeadlineTimer)","symbolLocation":108,"imageIndex":8},{"imageOffset":2038864,"imageIndex":8},{"imageOffset":2018532,"imageIndex":8},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327376,"name":"NetworkConfigWatcher","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45939448,"imageIndex":14},{"imageOffset":45211096,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327377,"frames":[{"imageOffset":8208,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":2327384,"frames":[{"imageOffset":8208,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":2327385,"frames":[{"imageOffset":8208,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":2327386,"frames":[{"imageOffset":8208,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":2327388,"name":"com.apple.NSEventThread","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":544472,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":372,"imageIndex":4},{"imageOffset":537488,"symbol":"__CFRunLoopRun","symbolLocation":1212,"imageIndex":4},{"imageOffset":534324,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":4},{"imageOffset":1765296,"symbol":"_NSEventThread","symbolLocation":196,"imageIndex":6},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327409,"name":"MemoryInfra","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45939448,"imageIndex":14},{"imageOffset":45211096,"imageIndex":14},{"imageOffset":45613552,"imageIndex":14},{"imageOffset":45392192,"imageIndex":14},{"imageOffset":45756568,"imageIndex":14},{"imageOffset":45756996,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]},{"id":2327410,"name":"ThreadPoolSingleThreadSharedBackgroundBlocking1","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":0},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":0},{"imageOffset":45939984,"imageIndex":14},{"imageOffset":45939448,"imageIndex":14},{"imageOffset":45708864,"imageIndex":14},{"imageOffset":45710956,"imageIndex":14},{"imageOffset":45710512,"imageIndex":14},{"imageOffset":45914156,"imageIndex":14},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":1},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":1}]}], "usedImages" : [ { "source" : "P", "arch" : "arm64e", "base" : 7266631680, "size" : 221184, "uuid" : "384945e6-dd71-37e5-9a3d-84fff14a1e60", "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib", "name" : "libsystem_kernel.dylib" }, { "source" : "P", "arch" : "arm64e", "base" : 7266852864, "size" : 53248, "uuid" : "f7b2eccf-e6f1-3109-ae81-9028c0b8332a", "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib", "name" : "libsystem_pthread.dylib" }, { "source" : "P", "arch" : "arm64e", "base" : 7265587200, "size" : 528384, "uuid" : "0dbc8b95-0037-3725-a769-0c772c293488", "path" : "\/usr\/lib\/system\/libsystem_c.dylib", "name" : "libsystem_c.dylib" }, { "source" : "P", "arch" : "arm64e", "base" : 7266959360, "size" : 32768, "uuid" : "49cf1536-27e5-3a34-9724-d75552cbab56", "path" : "\/usr\/lib\/system\/libsystem_platform.dylib", "name" : "libsystem_platform.dylib" }, { "source" : "P", "arch" : "arm64e", "base" : 7267172352, "CFBundleShortVersionString" : "6.9", "CFBundleIdentifier" : "com.apple.CoreFoundation", "size" : 5521408, "uuid" : "35473de6-c433-332c-aee0-013fd5f6d4fd", "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation", "name" : "CoreFoundation", "CFBundleVersion" : "1856.107" }, { "source" : "P", "arch" : "arm64e", "base" : 7413874688, "CFBundleShortVersionString" : "2.1.1", "CFBundleIdentifier" : "com.apple.HIToolbox", "size" : 3342336, "uuid" : "b5a3fe9a-833b-3697-ac9c-1e9e8eb11bac", "path" : "\/System\/Library\/Frameworks\/Carbon.framework\/Versions\/A\/Frameworks\/HIToolbox.framework\/Versions\/A\/HIToolbox", "name" : "HIToolbox" }, { "source" : "P", "arch" : "arm64e", "base" : 7312879616, "CFBundleShortVersionString" : "6.9", "CFBundleIdentifier" : "com.apple.AppKit", "size" : 15429632, "uuid" : "8701760d-31b6-37eb-be77-ffb39921dd22", "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit", "name" : "AppKit", "CFBundleVersion" : "2113.30.116" }, { "source" : "P", "arch" : "arm64", "base" : 4838752256, "size" : 606208, "uuid" : "bfcf26c7-0cc9-3ee3-a488-8647073e4fda", "path" : "\/Users\/USER\/*\/ChimeraX.app\/Contents\/Library\/Frameworks\/Python.framework\/Versions\/3.9\/lib\/python3.9\/site-packages\/PyQt6\/Qt6\/plugins\/platforms\/libqcocoa.dylib", "name" : "libqcocoa.dylib" }, { "source" : "P", "arch" : "arm64", "base" : 4781948928, "size" : 4489216, "uuid" : "8e087af8-99fe-368f-a2f5-8cac45da755d", "path" : "\/Users\/USER\/*\/ChimeraX.app\/Contents\/Library\/Frameworks\/Python.framework\/Versions\/3.9\/lib\/python3.9\/site-packages\/PyQt6\/Qt6\/lib\/QtCore.framework\/Versions\/A\/QtCore", "name" : "QtCore" }, { "source" : "P", "arch" : "arm64", "base" : 4829659136, "size" : 3014656, "uuid" : "cb6bf878-5499-3497-a87c-76b83c9156d6", "path" : "\/Users\/USER\/*\/ChimeraX.app\/Contents\/Library\/Frameworks\/Python.framework\/Versions\/3.9\/lib\/python3.9\/site-packages\/PyQt6\/QtWidgets.abi3.so", "name" : "QtWidgets.abi3.so" }, { "source" : "P", "arch" : "arm64", "base" : 4388192256, "CFBundleShortVersionString" : "3.9.6, (c) 2001-2019 Python Software Foundation.", "CFBundleIdentifier" : "org.python.python", "size" : 2523136, "uuid" : "1d0528e1-f5ed-3747-904f-70bf63e4e283", "path" : "\/Users\/USER\/*\/ChimeraX.app\/Contents\/Library\/Frameworks\/Python.framework\/Versions\/3.9\/Python", "name" : "Python", "CFBundleVersion" : "3.9.6" }, { "source" : "P", "arch" : "arm64", "base" : 4376772608, "CFBundleShortVersionString" : "1.4.0", "CFBundleIdentifier" : "edu.ucsf.cgl.ChimeraX", "size" : 16384, "uuid" : "14d0717f-ca24-3ba7-b277-d7edabf09fb5", "path" : "\/Users\/USER\/*\/ChimeraX.app\/Contents\/MacOS\/ChimeraX", "name" : "ChimeraX", "CFBundleVersion" : "1.4.0.0" }, { "source" : "P", "arch" : "arm64e", "base" : 4379820032, "size" : 393216, "uuid" : "d21a73ea-79cd-36eb-8ac9-2c5cf5181a27", "path" : "\/usr\/lib\/dyld", "name" : "dyld" }, { "source" : "P", "arch" : "arm64", "base" : 4420288512, "size" : 19169280, "uuid" : "0672674f-0fbf-3245-8fec-358e42c77be2", "path" : "\/Users\/USER\/*\/ChimeraX.app\/Contents\/Library\/Frameworks\/Python.framework\/Versions\/3.9\/lib\/python3.9\/site-packages\/numpy\/.dylibs\/libopenblas64_.0.dylib", "name" : "libopenblas64_.0.dylib" }, { "source" : "P", "arch" : "arm64", "base" : 6242107392, "size" : 136691712, "uuid" : "cfa5ae29-512c-39df-a082-53b32ac7d003", "path" : "\/Users\/USER\/*\/ChimeraX.app\/Contents\/Library\/Frameworks\/Python.framework\/Versions\/3.9\/lib\/python3.9\/site-packages\/PyQt6\/Qt6\/lib\/QtWebEngineCore.framework\/Versions\/A\/QtWebEngineCore", "name" : "QtWebEngineCore" } ], "sharedCache" : { "base" : 7263682560, "size" : 3091218432, "uuid" : "296eb28e-6aeb-3129-8fa6-feb92261a4eb" }, "vmSummary" : "ReadOnly portion of Libraries: Total=1.2G resident=0K(0%) swapped_out_or_unallocated=1.2G(100%)\nWritable regions: Total=1.9G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.9G(100%)\n\n VIRTUAL REGION \nREGION TYPE SIZE COUNT (non-coalesced) \n=========== ======= ======= \nAccelerate framework 384K 3 \nActivity Tracing 256K 1 \nCG backing stores 4032K 4 \nCG image 96K 3 \nColorSync 608K 26 \nCoreAnimation 208K 12 \nCoreGraphics 32K 2 \nCoreUI image data 2576K 16 \nFoundation 16K 1 \nKernel Alloc Once 32K 1 \nMALLOC 333.5M 67 \nMALLOC guard page 192K 9 \nMALLOC_MEDIUM (reserved) 688.0M 6 reserved VM address space (unallocated)\nMALLOC_NANO (reserved) 384.0M 1 reserved VM address space (unallocated)\nMach message 64K 2 \nOpenGL GLSL 384K 4 \nSTACK GUARD 640K 40 \nStack 171.4M 41 \nStack Guard 56.0M 1 \nVM_ALLOCATE 137.7M 205 \nVM_ALLOCATE (reserved) 224.0M 1 reserved VM address space (unallocated)\n__AUTH 2570K 308 \n__AUTH_CONST 19.7M 499 \n__DATA 23.5M 602 \n__DATA_CONST 25.9M 614 \n__DATA_DIRTY 1787K 215 \n__FONT_DATA 4K 1 \n__GLSLBUILTINS 5176K 1 \n__LINKEDIT 599.4M 114 \n__OBJC_CONST 3569K 273 \n__OBJC_RO 82.1M 1 \n__OBJC_RW 3104K 1 \n__TEXT 676.6M 632 \n__UNICODE 588K 1 \ndyld private memory 1184K 3 \nmapped file 180.7M 45 \nshared memory 3200K 26 \n=========== ======= ======= \nTOTAL 3.5G 3782 \nTOTAL, minus reserved VM space 2.3G 3782 \n", "legacyInfo" : { "threadTriggered" : { "name" : "CrBrowserMain", "queue" : "com.apple.main-thread" } }, "trialInfo" : { "rollouts" : [ { "rolloutId" : "601d9415f79519000ccd4b69", "factorPackIds" : { "SIRI_TEXT_TO_SPEECH" : "620161cb295c182621eced20" }, "deploymentId" : 240000392 }, { "rolloutId" : "607844aa04477260f58a8077", "factorPackIds" : { "SIRI_MORPHUN_ASSETS" : "6103050cbfe6dc472e1c982a" }, "deploymentId" : 240000066 }, { "rolloutId" : "602ad4dac86151000cf27e46", "factorPackIds" : { "SIRI_DICTATION_ASSETS" : "61fb0e87c773c43cde3bb80e" }, "deploymentId" : 240000305 }, { "rolloutId" : "60da5e84ab0ca017dace9abf", "factorPackIds" : { }, "deploymentId" : 240000008 }, { "rolloutId" : "5fc94383418129005b4e9ae0", "factorPackIds" : { }, "deploymentId" : 240000252 }, { "rolloutId" : "5ffde50ce2aacd000d47a95f", "factorPackIds" : { }, "deploymentId" : 240000115 } ], "experiments" : [ ] } }
follow-up: 24 comment:24 by , 4 years ago
That is great progress. Most users won't use imagecodecs (reading TIFF image data), netcdf4 (reading MD trajectories?) or PyTables (reading and writing HDF5 files). But I agree we should get those working on M1 before making it a daily build. But it would probably be ok making it a Tech Preview build. Will need to figure out what machine to use for builds. I think all our M1 CPUs are laptops and the mac mini. Maybe we should move the Mac Mini to work and use that for builds. I don't think we should cross-compile (ie build M1 ChimeraX on an Intel machine), more trouble than it is worth.
comment:25 by , 4 years ago
I neglected to mention I had not tried compiling OpenMM 7.6 or Ambertools 20; if you have a similar opinion about those prereqs then I'm OK with a techpreview build currently, if not I will work on those Makefiles ASAP.
comment:26 by , 4 years ago
Apologies about the ambiguous wording of "just those three packages excluded", would have been better to say "just those 3 pip packages".
follow-up: 27 comment:27 by , 4 years ago
Yes. Good to have a list of everything that is missing. So Ambertools and OpenMM. Still most users would not notice the 5 missing packages. Still think it would be fine as a techpreview, but not as a daily build. It is going to be painful to build those packages and you would be doing a bigger service to the community if you could get the maintainers to release an M1 version of those packages. Might not be possible for any of them, but worth trying.
comment:28 by , 4 years ago
I'm definitely inclined to agree. In OpenMM's case they have an arm64 build on conda in version 7.7, and in ambertools's case Ambertools21 is supposed to support M1 and its mailing list archives would indicate it has been active with people reporting issues and coming up with workarounds. Famous last words, knock on wood, crossing my fingers: hopefully it won't be too needlessly complicated.
comment:29 by , 4 years ago
Yes, great progress! If we make it a Tech Preview build, we would definitely want to put in the Notes section the functions that we know will not work, so that we don't get a bunch of spurious bug reports about then from people believing they're helping us. Might even want to put a warning in the log at startup, just so they don't have to refer back to the download page when they encounter a problem.
follow-up: 30 comment:30 by , 4 years ago
Might even go further, and in a tech preview raise a UserError if any of the missing modules are imported saying they are not yet available for Mac M1 CPU which will prevent the report a bug button from appearing.
comment:31 by , 4 years ago
Yes, that's a good idea, and I think I'll implement that. The experience of putting those kinds of warnings in would be very helpful for PyPi packaging which will run into the same kinds of heterogeneous environments.
comment:32 by , 4 years ago
Tristan made an OpenMM 7.7.0 build for Linux. I'll be using it to update OpenMM in ChimeraX.
follow-up: 33 comment:33 by , 4 years ago
Will you be putting OpenMM 7.7 into the standard daily builds as well? ________________________________ From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> Sent: 07 March 2022 17:44 Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk>; zjp@cgl.ucsf.edu <zjp@cgl.ucsf.edu> Subject: Re: [ChimeraX] #4663: Make native Apple M1 CPU distribution #4663: Make native Apple M1 CPU distribution ----------------------------------+-------------------------- Reporter: Tom Goddard | Owner: Zach Pearson Type: enhancement | Status: assigned Priority: moderate | Milestone: Component: Platform | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ----------------------------------+-------------------------- Comment (by Zach Pearson): Tristan made an OpenMM 7.7.0 build for Linux. I'll be using it to update OpenMM in ChimeraX. -- Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/4663#comment:32> ChimeraX <https://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
comment:34 by , 4 years ago
Yes, I haven't made the update yet as I've been trying to wrap my head around what to do for Windows. It looks like most of the problems with OpenMM are caused by ABI incompatibilities on Linux, but I've been convincing myself it's safe to update the Windows and macOS versions. We specify a CUDA version that's not present in the filenames on OpenMM's conda repo, and I don't think they pin CUDA in their package.
follow-up: 35 comment:35 by , 4 years ago
We get OpenMM binaries for Mac and Windows from Anaconda https://anaconda.org/conda-forge/openmm/files <https://anaconda.org/conda-forge/openmm/files> as described in ChimeraX source file chimerax/prereqs/openmm/README.txt The Mac and Windows version are for specific CUDA versions. You can see the CUDA version by clicking on the “i” icon in the distribution table since that info is not in the Anaconda file name. See the attached image for what the anaconda table looks like. The “I” icon is immediately to the left of each file name.
comment:37 by , 4 years ago
They used to specify the CUDA version(s) they built against in the file names, but not any more - to find out what they'd used for 7.7 I had to expand the tarball and ldd OpenMMCudaCompiler.so (they built against CUDA 11.2). It's not actually strictly necessary for the user to have that specific CUDA version installed - although it does help a little with startup performance. OpenMM works out what's available at runtime and adjusts accordingly. ________________________________ From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> Sent: 09 March 2022 19:12 To: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; zjp@cgl.ucsf.edu <zjp@cgl.ucsf.edu> Cc: pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk> Subject: Re: [ChimeraX] #4663: Make native Apple M1 CPU distribution #4663: Make native Apple M1 CPU distribution ----------------------------------+-------------------------- Reporter: Tom Goddard | Owner: Zach Pearson Type: enhancement | Status: assigned Priority: moderate | Milestone: Component: Platform | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ----------------------------------+-------------------------- Comment (by goddard@…): {{{ We get OpenMM binaries for Mac and Windows from Anaconda https://anaconda.org/conda-forge/openmm/files <https://anaconda.org/conda-forge/openmm/files> as described in ChimeraX source file chimerax/prereqs/openmm/README.txt The Mac and Windows version are for specific CUDA versions. You can see the CUDA version by clicking on the “i” icon in the distribution table since that info is not in the Anaconda file name. See the attached image for what the anaconda table looks like. The “I” icon is immediately to the left of each file name. }}} [[Image(anaconda.png)]] -- Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/4663#comment:35> ChimeraX <https://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
follow-up: 37 comment:38 by , 4 years ago
Ah! Now I see it *does* specify the CUDA version in the popup after clicking "i" - I did do that, but must have been suffering from selective blindness at the time...
comment:39 by , 4 years ago
https://github.com/PyTables/PyTables/pull/944 Tables may be getting close to an M1 build.
comment:40 by , 4 years ago
I added OpenMM 7.7.0 for Mac M1 to the build taken from conda-forge. Other platforms are still using OpenMM 7.6.0.
comment:41 by , 4 years ago
I added Intel AmberTools to the Mac M1 distribution and tested and it works. This works because AmberTools is called using subprocesses so they run using Rosetta emulation. The same is true for ffmpeg encoding movies. I tested AmberTools on an M1 ChimeraX for showing an electrostatic surface (on AMP, PubChem 66083) and it worked.
comment:42 by , 4 years ago
I converted the Conda tarball versions of netCDF4-1.5.8, imagecodecs-2022.2.22, and tables-3.7.0 -- all of which are available on arm64 macOS -- into wheels and uploaded them to the ChimeraX pre-reqs repo. I'll update our Makefiles to ensure that they install on M1 machines and then work on setting up the M1 mac Mini as a build machine. Then, we can move this project into the bugfixing stage.
comment:43 by , 3 years ago
After installing tables and netcdf4 to a developer build I discovered that some dynamic libraries were missing. They were not included in the Anaconda tarballs, so I retrieved them from /opt/homebrew/
and uploaded them to the prerequisites archive on plato, changing the extensions from .dylib
to .dylib.arm64
to make it clear which platform they are for. I'll ensure correct rpath/runpath values in netcdf4 and tables' shared objects and ensure that the libraries are placed in the right spot.
comment:44 by , 3 years ago
Changes not needed because the tables search path looks first in the local Python before expanding search to /usr/lib. netcdf4's search path is pretty polluted with paths that look like they're from CI runs, however.
This commit installs the packages. Not closing this ticket because it's about making a distribution.
comment:45 by , 3 years ago
Should not use homebrew libraries. Anaconda distributes all the needed libraries and those should be used. For instance Anaconda distributes hdf5 libraries needed by pytables
comment:47 by , 3 years ago
Will need to see if universal distribution including both Intel and Arm64 is reasonable size. This would be simpler for users than separate Intel and Arm64 builds. The download page will not be able to identify M1 Macs because Safari on M1 Mac claims to be for Intel (although it is a native M1 app). So users would have to know what kind of CPU they have.
comment:48 by , 3 years ago
So far: netcdf4, pytables, and imagecodecs were all sourced from Anaconda, but netcdf4 and pytables relied on arm64 dylibs that weren't bundled with the packages that need them. I tried using homebrew libraries, but Tom pointed out that they may not be ABI compatible, so on his suggestion we used libraries from Anaconda instead. Downloading the tarballs for the libraries and copying them over resulted in an unsigned code error, so I made an anaconda environment on my machine where I could install the packages directly from anaconda using its package manager. After copying those libs over, the errors went away, meaning we now have a testable candidate for an official M1 build of ChimeraX.
We are probably going to make a universal build, but as Tom noted in an email to me:
the Mac universal build [will] probably [require a lot of things to be] work[ed] out[:] [c]an we combine an old Intel macOS 10.14 support with new M1 macOS 11+ support? Is notarization going to lead to new problems on M1? Can we build the Intel version on the M1 Mac Mini? ...
So I'm opening a new ticket for that effort blocking this one. Tom suggests testing the M1 build as a daily build offering when it's complete. I agree.
I think we should try to get an M1 compatible 1.4 build though, so my suggestion is to branch the 1.4 codebase twice: one release candidate branch, one M1 branch. We'll use the M1 branch sparingly, only cherry picking commits from develop which directly deal with M1 compatibility issues, so we can ensure that build is compatible with the other 1.4 builds.
comment:49 by , 3 years ago
Blocked By: | → 6778 |
---|
comment:50 by , 3 years ago
Milestone: | 1.4 → 1.5 |
---|
Changing the milestone to 1.5 because we're going to either silently replace the macOS 1.4 download with a universal download or release a 1.5 download, but in either case 1.4 will come out without this ticket.
comment:51 by , 3 years ago
On May 10, 2022, at 12:09 PM, Zach Pearson wrote:
Hi all,
I was testing building ChimeraX on Essex (macOS 10.14, Mojave) and found that I could not cross-compile arm64 code. It is using Xcode 10.3, but cross-compilation was introduced in 12.2 which requires at least macOS 10.15.4, Catalina.
We can certainly test a universal build on macOS 10.14, but to build it we need either a Catalina machine or the M1 Mac. In the event that ChimeraX built on the M1 Mac doesn’t work on 10.14, should we drop support for it since Apple is no longer supporting it?
— Zach
comment:52 by , 3 years ago
Our usual rule has been to support at least the last 3 macOS versions, which would be 12, 11, 10.15. But we don't drop support for older ones unless there is a good reason.
Looks like 10.15 and newer comprises 85% of macOS systems with 5% at 10.14 and 5% at 10.13
https://gs.statcounter.com/os-version-market-share/macos/desktop/worldwide
Can an M1 Mac cross-compile for Intel? On Mac we set MACOSX_DEPLOYMENT_TARGET = 10.13 in the build_tools repository (hosted on plato) in build_macosx.sh. I am a bit puzzled why our download page says 10.14 while our build scripts say they target 10.13.
comment:53 by , 3 years ago
Yes, M1 Macs can cross-compile (so can Intel Macs with Catalina or newer). I tested an M1 universal build on Essex built on my M1 laptop, but it complained that it couldn't recognize some loader instruction (it got as far as trying to import the arrays shared object, then mach complained). However, it may be that if I set MACOSX_DEPLOYMENT_TARGET before building, it may produce code that Mojave can run. I'll try it again asap.
comment:54 by , 3 years ago
Blocked By: | 6778 → 6669, 6778 |
---|
The commercial PyQt6 wheels are not working on Mac ARM64, ticket #6669. Won't be able to make a Mac ARM64 distribution until that is fixed.
comment:55 by , 3 years ago
I added a build_mac_arm64.sh script to our build_tools git repository that builds the Mac ARM64 ChimeraX on euclid.cgl.ucsf.edu and I tested running it as a techpreview build. I used PyPi PyQt instead of our licensed PyQt wheels due to bug #6669. ChimeraX built but notarization failed apparently because the build machine needs some Apple notarization keychain entry. Here is the notarization error
+ cd .. + /usr/bin/python3 macosx_package/notarize.py everything -a chimerax/ChimeraX_techpreview.app -d chimerax.dm\ g -v -v -v command: ['/usr/bin/security', 'unlock', '-p', 'chimera', '/Users/chimera/Library/Keychains/codesign.keychai\ n'] unlock keychain /Users/chimera/Library/Keychains/codesign.keychain failed: command: ['/usr/bin/security', 'unlock', '-p', 'chimera', '/Users/chimera/Library/Keychains/codesign.keychai\ n'] stderr: security: SecKeychainUnlock /Users/chimera/Library/Keychains/codesign.keychain: The specified keychain could\ not be found. ERROR IN NOTARIZATION + echo 'ERROR IN NOTARIZATION'
I will try again once I find out how to get the keychain entry. Probably Eric knows that since it must be setup on his desktop machine essex.cgl.ucsf.edu which builds the Intel Mac ChimeraX dailies.
We might document a couple other steps I had to do to setup a new daily build machine. It needed to be able to ssh to plato without a password to get the PyQt wheels (so put ssh key on plato chimera account). A ChimeraX GitHub account (I used mine) needed to add the the euclid chimera ssh key so it can git clone the chimerax repository with the git@… protocol. And the notarization script needed a PyPi package called "lief" installed on the system python, and that package needs cmake to build. Also the build machine needs to be set to not sleep, so the cron job can connect to it. I did these 4 steps.
comment:56 by , 3 years ago
The next steps are
1) Put the Apple notarization key on the euclid chimera account keychain.
2) Fix the PyQt licensed wheels on plato for Mac. There are only universal PyQt6 6.3.1 Mac wheels on plato (PyQt6_commercial-6.3.1-cp37-abi3-macosx_10_14_universal2.whl, PyQt6_WebEngine_commercial-6.3.1-cp37-abi3-macosx_10_14_universal2.whl) and they work on Intel. So somehow the PyQt license handling for that wheel is working for Intel Mac but not ARM64 Mac. Ticket #6669.
3) Enable daily techpreview builds by adding shell command "./build_chimerax.sh -b techpreview -p mac_arm64" to the daily_chimerax_build script in the build_tools repository.
4) Check that the download page is able to show this techpreview. Probably needs adding the mac_arm64 platform to the download page script.
comment:57 by , 3 years ago
I've resolved the problems except the PyQt commercial wheels do not work on Mac arm64 so I've contacted Riverbank support to fix that. ChimeraX ticket #6669.
I tested building the techpreview (with PyPi PyQt), notarizing it, and put it on the preview download web page, downloaded it and tested. Everything working. It will not be part of the nightly builds until the commercial PyQt wheels work.
Here are steps that were needed to get the techpreview builds working.
1) Notarization. I copied the codesign.keychain and codesign.keychain-db files from essex (Intel Mac build machine) ~/Library/Keychains. Also had to add that keychain in the Mac Keychains app. Then notarization failed due to missing timestamps which is a frequent problem we have on Intel Mac too. Investigation suggests the timestamp issue is UCSF firewall problems and I made a ChimeraX ticket for that #7209. By building a couple times I got past the timestamp error. Notarization still failed because a dozen .o and .a (archive) files did not get signed because our notarization.py script did not recognize those as MachO binaries. The .o problem was just an omission in our script. The .a problem seems a bug in the lief PyPi package our script uses to identify binaries. I worked around the lief bug by checking for ".a" suffixes. Then the notarization completed successfully.
2) Download page. I added a mac_arm64 build platform to our update_release_info.py script and made the download page use it. This required improving our download page javascript which is relutil-1.2.2.js to handle 2 mac platforms. Also there is a bug in the download.html page where it will not show techpreview builds if SHOW_CANDIDATES=true in that page's javascript and there are no candidate releases because that generates an error and it then never considers techpreview releases. For now we can just set SHOW_CANDIDATES=false, but this bug needs to be fixed. I've left SHOW_CANDIDATES=true so the techpreview for Mac M1 will not be shown since it is using GPL PyQt. Once we get the correct PyQt we can change the download page so the techpreview appears.
comment:58 by , 3 years ago
Currently techpreview Mac M1 build is only waiting for Phil Thompson to fix PyQt6 commercial wheels. Phil says he will receive Mac M1 hardware on July 6, 2022 and it may take some days to fix the wheels.
comment:59 by , 3 years ago
I made a separate ticket to investigate the difficulties of making a universal Mac ChimeraX that contains both Intel and ARM64 binaries, ticket #7222
comment:60 by , 3 years ago
Phil Thompson found the PyQt6 problem, invalid code signature, and it should be easy to work around.
From: Phil Thompson <phil@riverbankcomputing.com> Subject: Re: Commercial PyQt6 gives "This copy of PyQt is unlicensed" on Mac M1 Date: July 16, 2022 at 5:33:22 AM PDT To: Tom Goddard Tom, I've found the problem. When you download your commercial wheel it is 'licensed' to you on the fly by updating the QtCore.abi.so file with your licensing information. This process invalidates the code signature for arm64 binaries (Intel binaries don't care). The workaround is to resign the QtCore.abi.so file yourself after installing the wheel... codesign -s - /path/to/site-packages/PyQt6/QtCore.abi.so I need to have a think as to the best way to fix this properly. Regards, Phil
From: Phil Thompson Subject: Re: Commercial PyQt6 gives "This copy of PyQt is unlicensed" on Mac M1 Date: July 16, 2022 at 10:27:23 AM PDT To: Tom Goddard Tom, The next snapshot will have the license check removed. This is the only way to fix the problem until I can sign macOS binaries on a Linux system. Phil
comment:61 by , 3 years ago
I made our prereqs/PyQt makefile re-codesign the QtCore.abi3.so library. Take this out once Phil Thompson provides a fix. Phil says the PyQt 6.3.2 release will not need the codesigning.
comment:62 by , 3 years ago
Added the Mac M1 build to the download page as a technology preview and made the daily build script build it every night.
The build targets macOS 11 (using MACOSX_DEPLOYMENT_TARGET=11.0) but I have only tested on macOS 12. Don't have any macOS 11 machine so we will have to see if any users report a problem with macOS 11.
Used LZMA compression producing a small Mac M1 dmg file of only 250 Mbytes vs 400 Mbytes for Intel Mac with zlib compression. The LZMA compression is only available on macOS 10.15 and above and currently we support macOS 10.14 on Intel. Ticket #7274
comment:63 by , 3 years ago
The PyQt6 6.3.1 commercial wheel from Riverbank now works on Mac M1 without re-codesigning it. I've taken out the recodesigning from prereqs/PyQt/Makefile.wheel.qt6.
Begin forwarded message:
From: Phil Thompson
Subject: Re: Commercial PyQt6 gives "This copy of PyQt is unlicensed" on Mac M1
Date: July 24, 2022 at 2:10:26 AM PDT
To: Tom Goddard
Tom,
I've now fixed the root cause properly. You should be able to re-download the v6.3.1 wheel and it should install and run.
Phil
comment:64 by , 3 years ago
The Mac M1 techpreview build had 103 downloads from July 21-29, 2022 from unique IP addresses according to our web server logs.
comment:65 by , 3 years ago
So it turns out that switching FFT libraries wasn't quite as horrible as I thought it would be. A bit of fumbling around in the dark (because it seems that nobody, anywhere, ever seems to feel it necessary to properly document an FFT library), but after a few hours of effort I'm now running happily with PocketFFT. Performance seems very similar to the MKL version, and as an added bonus the wheel file size is reduced 4-5 fold (to ~7 MB). So that's probably the biggest roadblock to a native Apple Silicon ISOLDE build out of the way. ________________________________ From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> Sent: 20 July 2021 18:56 Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk> Subject: Re: [ChimeraX] #4663: Make native Apple M1 CPU distribution #4663: Make native Apple M1 CPU distribution ----------------------------------+------------------------- Reporter: Tom Goddard | Owner: Tom Goddard Type: enhancement | Status: assigned Priority: moderate | Milestone: Component: Platform | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ----------------------------------+------------------------- Changes (by Tristan Croll): * cc: Tristan Croll (added) Comment: Supporting Apple Silicon will take a bit of work for me, I think. The big stumbling block will be the Intel MKL library I'm using to replace FFTW2 in Clipper - as far as I understand, the MKL is firmly tied to x86_64 architecture. So I'd have to find and integrate a replacement, which will take a fair bit of work. Not impossible, but far from trivial. -- Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/4663#comment:14> ChimeraX <https://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
follow-up: 65 comment:66 by , 3 years ago
Glad to hear you have an FFT solution for Mac ARM.
Do you need a Mac ARM build machine? We could try to give you ssh access to our Mac ARM ChimeraX build machine (euclid.cgl.ucsf.edu). It is some trouble because the UCSF firewall does not allow ssh into UCSF machines. We would have to give you access to the CGL VPN or get UCSF IT to make a security exemption so ssh is possible.
comment:67 by , 3 years ago
No problem there - I have a shiny new MacBook Pro to play with! Any tips would be welcomed, though. On Tue, 23 Aug 2022 at 02:00, ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:
follow-up: 67 comment:68 by , 3 years ago
The Mac M1 doesn't require any compiler flag changes. There is the -arch flag which lets you build both ARM and Intel binaries at the same time although you probably will not need that kind of universal build. We have a Mac M1 ChimeraX version at the bottom of the download page under Technology Preview and plan to make daily builds in coming months and a native Mac M1 release of ChimeraX 1.5 around the end of this year.
follow-up: 68 comment:69 by , 3 years ago
Building on Mac ARM should use MACOSX_DEPLOYMENT_TARGET=11.0. I don't know exactly how you build so I'm not sure if that will be used automatically because the Mac ARM distributed build used that setting, or if you need to change some Makefile or bundle_builder code.
follow-up: 69 comment:70 by , 3 years ago
I have it set in the Makefile (to 10.13 because I understand that's the current standard that ChimeraX adheres to). I don't think bundle_builder sets this anywhere (perhaps it should?)... I added it to the Makefile quite some time back in response to a user complaint (I updated my OS, and as a result one of my release builds was no longer backward-compatible). There's a ticket somewhere back in Trac - that's where I learned of the existence of that flag, thanks to Greg. The more I think about it, the more I think it might be sensible if bundle_builder automatically set MACOSX_DEPLOYMENT_TARGET to its preferred value (perhaps only doing so if it's not already set, to accommodate people who want to be doing something special). Otherwise my code needs to figure out whether I'm building against Intel or ARM ChimeraX and set it accordingly (unless you plan to go to a 11.0 minimum across the board?). On Tue, Aug 23, 2022 at 7:09 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:
follow-up: 70 comment:71 by , 3 years ago
Type: | enhancement → defect |
---|
comment:72 by , 3 years ago
Type: | defect → enhancement |
---|
comment:73 by , 3 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Tom was able to get an M1 build and a Universal build up as daily builds.
We got a Mac Mini, May 2021.
I built relocatable native ARM Python 3.8.10 from standard Python distribution. The standard Python on Mac is not relocatable so this uses Greg Neagle's relocatable-python github project (Makefile.macos in prereqs/Python) which did not work without modifying Python fetch since ARM Python uses file name with macos11 while Intel version uses macosx10.9 (with an x in the name). I just hand edited relocatable-python and ran it by hand.
ChimeraX build then fails on PyQt because there are no ARM wheels available at PyPi. Will ask if these can be added on the PyQt mailing list.