Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for arm64-apple #2247

Open
10 of 13 tasks
bjeurissen opened this issue Dec 17, 2020 · 38 comments
Open
10 of 13 tasks

Support for arm64-apple #2247

bjeurissen opened this issue Dec 17, 2020 · 38 comments

Comments

@bjeurissen
Copy link
Member

bjeurissen commented Dec 17, 2020

TODO:

  • required if we want to build for arm64-apple in CI and github actions without the availability of arm64-apple environment (this is the case now)
  • mostly requires infrastructure to disable runtime tests and getting version numbers from source code rather than binary invocations when building for another architecture
  • alternative is to hijack config file from x86_64 build and patch it with arm64 target options (requires no modifications to configure script)
@bjeurissen
Copy link
Member Author

The short story is that ./configure && ./build will probably work out of the box on native M1 mac, but we might need some tweaks to the ./configure infrastructure if we want to build the binaries on x86_64 (e.g. for binary releases; running CI for both arm64 and x86_64 is probably overkill, especially since none of the arm64 binaries will be able to run on x86_64 anyway).

@jdtournier
Copy link
Member

Sure, happy to support. What did you need to modify to get it to build the M1 binaries anyway?

@bjeurissen
Copy link
Member Author

bjeurissen commented Dec 17, 2020

Add -target arm64-apple-macos11 to all clang++ calls.

@jdtournier
Copy link
Member

You probably do that simply by setting CXX="clang++ -target arm64-apple-macos11" before invoking ./configure?

@jdtournier
Copy link
Member

Actually, that likely won't work. Try this instead:

CFLAGS="-target arm64-apple-macos11" LINKFLAGS="$CFLAGS" ./configure

@bjeurissen
Copy link
Member Author

bjeurissen commented Dec 17, 2020

That was exactly what I first attempted, but the problem is that you cannot use ./configure for cross-compilation, currently, as all the attempts to execute ./a.out will not work, as those binaries will not match the host architecture. So it would require removing all those run-time checks and also change the mechanism to obtain the version numbers of the dependencies.

What I have done for now is generate the config file for a native x86_64 build and then patch the config file to add -target arm64-apple-macos11 to the correct FLAGS for an arm64 build.

@jdtournier
Copy link
Member

OK, gotcha. Should be simple to add an environment variable to add the flags immediately prior to writing out the config. Something like CROSS_TARGET=arm64-apple-macos11?

@bjeurissen
Copy link
Member Author

That could work. One caveat are the binaries of the dependencies. For ./configure to succeed, you would need access to the x86_64 binaries for Qt etc, and they would then have to be swapped by the arm64 ones before the ./build stage, or they would have to be in separate directories, but then we also have to modify the config script to reflect that. Anyway, it would still be a bit of a mess, so maybe making the runtime parts of the configure script optional, could be a simpler method after all...

@jdtournier
Copy link
Member

jdtournier commented Dec 17, 2020

We could I guess skip a lot of the runtime checks, but certainly not all. We'll still need to run pkg-config to get compile & link flags (though that might not need to change), and to run qmake to get compile & link flags for Qt. I'm guessing what you have in mind is to disable all checks that execute a freshly compiled binary, but preserve all others? If so, that might work. Simplest then would be to add an option to ignore run failures in the compile() call around its final execute() call, either by returning before that point, or by catching its RunError exception and preventing it from propagating down the stack. I think that would cover all relevant cases...

@bjeurissen
Copy link
Member Author

bjeurissen commented Jan 4, 2021

My M1 Macbook arrived today! The cross-compiled arm64 binaries as well as the original x86_64 binaries appear to work just fine on arm64.

arm64 binary on arm64:

% file $(which dwi2fod) && time dwi2fod msmt_csd -mask mask.mif dwi.mif csf.txt csf.mif gm.txt gm.mif wm.txt wm.mif
/usr/local/bin/dwi2fod: Mach-O 64-bit executable arm64
dwi2fod: [100%] performing MSMT CSD (4 shells, 3 tissues)
604.96s user 1.04s system 784% cpu 1:17.21 total

x86_64 binary on arm64:

% file $(which dwi2fod) && time dwi2fod msmt_csd -mask mask.mif dwi.mif csf.txt csf.mif gm.txt gm.mif wm.txt wm.mif
/usr/local/bin/dwi2fod: Mach-O 64-bit executable x86_64
dwi2fod: [100%] performing MSMT CSD (4 shells, 3 tissues)
784.28s user 1.72s system 776% cpu 1:41.23 total

For reference, dwi.mif and mask.mif are taken from the preprocessed single subject Siemens data on osf.

@bjeurissen
Copy link
Member Author

For reference, a full release build of mrtrix3 on the Apple M1 took 214 seconds (not including ./configure).

@bjeurissen
Copy link
Member Author

bjeurissen commented Jan 4, 2021

mrview crashes when loading a tractogram with {20,50,100}K tracks (10K works fine) :(

Process:               mrview [38290]
Path:                  /usr/local/mrtrix3/bin/MRView.app/Contents/MacOS/mrview
Identifier:            org.mrtrix.mrview
Version:               3.0 (3.0)
Code Type:             ARM-64 (Native)
Parent Process:        ??? [1]
Responsible:           mrview [38290]
User ID:               501

Date/Time:             2021-01-04 21:15:19.185 +0100
OS Version:            macOS 11.1 (20C69)
Report Version:        12
Anonymous UUID:        8F2C3F46-BAA8-4204-B601-1CE481AE38D7

Sleep/Wake UUID:       F66D5834-643F-46A4-BD33-428882E9739C

Time Awake Since Boot: 20000 seconds
Time Since Wake:       960 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00000001952b3cec __pthread_kill + 8
1   libsystem_pthread.dylib       	0x00000001952e4c24 pthread_kill + 292
2   libsystem_c.dylib             	0x000000019522c864 abort + 104
3   com.apple.IOGPU               	0x00000001ac6792b8 ioGPUResourceListAddNewGroupAndResource + 228
4   com.apple.AGXMetal13-3        	0x0000000115b776d4 0x115700000 + 4683476
5   com.apple.AGXMetal13-3        	0x0000000115b76cc4 0x115700000 + 4680900
6   com.apple.AGXMetal13-3        	0x0000000115b768b8 0x115700000 + 4679864
7   com.apple.AppleMetalOpenGLRenderer	0x000000011520750c gldRenderVertexArray(GLDContextRec*, unsigned int, unsigned int, int, int, unsigned int, void const*, int, void const*) + 14828
8   GLEngine                      	0x00000001d7c86154 glMultiDrawArrays_GL3Exec + 332
9   org.mrtrix.mrview             	0x0000000102dc5c24 MR::GUI::MRView::Tool::Tractogram::render_streamlines() + 180
10  org.mrtrix.mrview             	0x0000000102dc5ad0 MR::GUI::MRView::Tool::Tractogram::render(MR::GUI::Projection const&) + 1892
11  org.mrtrix.mrview             	0x0000000102d4af94 MR::GUI::MRView::Tool::Tractography::draw(MR::GUI::Projection const&, bool, int, int) + 224
12  org.mrtrix.mrview             	0x0000000102de59cc MR::GUI::MRView::Mode::Base::render_tools(MR::GUI::Projection const&, bool, int, int) + 348
13  org.mrtrix.mrview             	0x0000000102e29444 MR::GUI::MRView::Mode::Slice::draw_plane_primitive(int, MR::GUI::MRView::Displayable::Shader&, MR::GUI::Projection&) + 316
14  org.mrtrix.mrview             	0x0000000102e29204 MR::GUI::MRView::Mode::Slice::paint(MR::GUI::Projection&) + 176
15  org.mrtrix.mrview             	0x0000000102e19dd0 MR::GUI::MRView::Mode::Base::paintGL() + 420
16  org.mrtrix.mrview             	0x0000000102de97a4 MR::GUI::MRView::Window::paintGL() + 140
17  libQt5Widgets.5.15.2.dylib    	0x00000001034d5eb0 0x10346c000 + 433840
18  libQt5Widgets.5.15.2.dylib    	0x00000001034b2728 QWidget::event(QEvent*) + 128
19  libQt5Widgets.5.15.2.dylib    	0x000000010347d4b0 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 292
20  libQt5Widgets.5.15.2.dylib    	0x000000010347e844 QApplication::notify(QObject*, QEvent*) + 556
21  libQt5Core.5.15.2.dylib       	0x000000010425c8d0 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 208
22  libQt5Widgets.5.15.2.dylib    	0x00000001034acc20 QWidgetPrivate::sendPaintEvent(QRegion const&) + 44
23  libQt5Widgets.5.15.2.dylib    	0x00000001034d6774 QOpenGLWidget::resizeEvent(QResizeEvent*) + 172
24  libQt5Widgets.5.15.2.dylib    	0x00000001034b2a84 QWidget::event(QEvent*) + 988
25  libQt5Widgets.5.15.2.dylib    	0x000000010347d4b0 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 292
26  libQt5Widgets.5.15.2.dylib    	0x000000010347e844 QApplication::notify(QObject*, QEvent*) + 556
27  libQt5Core.5.15.2.dylib       	0x000000010425c8d0 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 208
28  libQt5Widgets.5.15.2.dylib    	0x00000001034afd2c QWidgetPrivate::setGeometry_sys(int, int, int, int, bool) + 1836
29  libQt5Widgets.5.15.2.dylib    	0x00000001034aff8c QWidget::setGeometry(QRect const&) + 232
30  libQt5Widgets.5.15.2.dylib    	0x00000001034b983c QWidget::qt_metacall(QMetaObject::Call, int, void**) + 96
31  libQt5Widgets.5.15.2.dylib    	0x00000001034d6e48 QOpenGLWidget::qt_metacall(QMetaObject::Call, int, void**) + 32
32  libQt5Core.5.15.2.dylib       	0x000000010409531c 0x104088000 + 54044
33  libQt5Core.5.15.2.dylib       	0x000000010409219c 0x104088000 + 41372
34  libQt5Core.5.15.2.dylib       	0x00000001040920c0 0x104088000 + 41152
35  libQt5Core.5.15.2.dylib       	0x0000000104095be8 QPropertyAnimation::updateState(QAbstractAnimation::State, QAbstractAnimation::State) + 796
36  libQt5Core.5.15.2.dylib       	0x000000010409003c 0x104088000 + 32828
37  libQt5Widgets.5.15.2.dylib    	0x000000010354bfe4 0x10346c000 + 917476
38  libQt5Widgets.5.15.2.dylib    	0x0000000103589f28 0x10346c000 + 1171240
39  libQt5Widgets.5.15.2.dylib    	0x00000001035b4308 0x10346c000 + 1344264
40  libQt5Widgets.5.15.2.dylib    	0x00000001035b3a84 0x10346c000 + 1342084
41  libQt5Widgets.5.15.2.dylib    	0x00000001034970d0 QLayoutPrivate::doResize() + 164
42  libQt5Widgets.5.15.2.dylib    	0x0000000103497598 QLayout::activate() + 840
43  libQt5Widgets.5.15.2.dylib    	0x00000001034b245c QWidgetPrivate::setVisible(bool) + 568
44  org.mrtrix.mrview             	0x0000000102d2b474 MR::GUI::MRView::Tool::TrackScalarFileOptions::update_UI() + 56
45  org.mrtrix.mrview             	0x0000000102d4c8c4 MR::GUI::MRView::Tool::Tractography::update_scalar_options() + 192
46  org.mrtrix.mrview             	0x0000000102d4debc MR::GUI::MRView::Tool::Tractography::selection_changed_slot(QItemSelection const&, QItemSelection const&) + 48
47  libQt5Core.5.15.2.dylib       	0x000000010428cc68 0x104088000 + 2116712
48  libQt5Core.5.15.2.dylib       	0x0000000104224054 QItemSelectionModel::emitSelectionChanged(QItemSelection const&, QItemSelection const&) + 284
49  libQt5Core.5.15.2.dylib       	0x0000000104223d2c QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>) + 704
50  libQt5Core.5.15.2.dylib       	0x0000000104223a38 QItemSelectionModel::select(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) + 72
51  libQt5Core.5.15.2.dylib       	0x0000000104224aa0 QItemSelectionModel::setCurrentIndex(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) + 212
52  libQt5Widgets.5.15.2.dylib    	0x00000001036be0cc QAbstractItemView::setCurrentIndex(QModelIndex const&) + 160
53  org.mrtrix.mrview             	0x0000000102d4b3ac MR::GUI::MRView::Tool::Tractography::add_tractogram(MR::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, 0>&) + 144
54  org.mrtrix.mrview             	0x0000000102d4b25c MR::GUI::MRView::Tool::Tractography::tractogram_open_slot() + 164
55  libQt5Core.5.15.2.dylib       	0x000000010428cc68 0x104088000 + 2116712
56  libQt5Widgets.5.15.2.dylib    	0x000000010354d884 0x10346c000 + 923780
57  libQt5Widgets.5.15.2.dylib    	0x000000010354d6ec 0x10346c000 + 923372
58  libQt5Widgets.5.15.2.dylib    	0x000000010354e6dc QAbstractButton::mouseReleaseEvent(QMouseEvent*) + 256
59  libQt5Widgets.5.15.2.dylib    	0x00000001034b2728 QWidget::event(QEvent*) + 128
60  libQt5Widgets.5.15.2.dylib    	0x000000010347d4b0 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 292
61  libQt5Widgets.5.15.2.dylib    	0x000000010347fdec QApplication::notify(QObject*, QEvent*) + 6100
62  libQt5Core.5.15.2.dylib       	0x000000010425c8d0 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 208
63  libQt5Widgets.5.15.2.dylib    	0x000000010347de28 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) + 988
64  libQt5Widgets.5.15.2.dylib    	0x00000001034d0038 0x10346c000 + 409656
65  libQt5Widgets.5.15.2.dylib    	0x00000001034cf058 0x10346c000 + 405592
66  libQt5Widgets.5.15.2.dylib    	0x000000010347d4b0 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 292
67  libQt5Widgets.5.15.2.dylib    	0x000000010347e844 QApplication::notify(QObject*, QEvent*) + 556
68  libQt5Core.5.15.2.dylib       	0x000000010425c8d0 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 208
69  libQt5Gui.5.15.2.dylib        	0x0000000103a1b89c QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 2808
70  libQt5Gui.5.15.2.dylib        	0x0000000103a018ec QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 248
71  libqcocoa.dylib               	0x00000001063f3ab4 0x1063bc000 + 228020
72  com.apple.CoreFoundation      	0x00000001953dfc14 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
73  com.apple.CoreFoundation      	0x00000001953dfb60 __CFRunLoopDoSource0 + 208
74  com.apple.CoreFoundation      	0x00000001953df84c __CFRunLoopDoSources0 + 268
75  com.apple.CoreFoundation      	0x00000001953de1e4 __CFRunLoopRun + 824
76  com.apple.CoreFoundation      	0x00000001953dd740 CFRunLoopRunSpecific + 600
77  com.apple.HIToolbox           	0x000000019cefa678 RunCurrentEventLoopInMode + 292
78  com.apple.HIToolbox           	0x000000019cefa338 ReceiveNextEventCommon + 320
79  com.apple.HIToolbox           	0x000000019cefa1d8 _BlockUntilNextEventMatchingListInModeWithFilter + 76
80  com.apple.AppKit              	0x0000000197bb5da4 _DPSNextEvent + 868
81  com.apple.AppKit              	0x0000000197bb4724 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1312
82  com.apple.AppKit              	0x0000000197ba660c -[NSApplication run] + 600
83  libqcocoa.dylib               	0x00000001063f280c 0x1063bc000 + 223244
84  libQt5Core.5.15.2.dylib       	0x0000000104258898 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 524
85  libQt5Core.5.15.2.dylib       	0x000000010425cf00 QCoreApplication::exec() + 132
86  org.mrtrix.mrview             	0x0000000102e710b4 run() + 72
87  org.mrtrix.mrview             	0x0000000102e70de0 main + 80
88  libdyld.dylib                 	0x0000000195300f34 start + 4

Thread 1:
0   libsystem_pthread.dylib       	0x00000001952dfd8c start_wqthread + 0

Thread 2:: com.apple.CFSocket.private
0   libsystem_kernel.dylib        	0x00000001952b60e8 __select + 8
1   com.apple.CoreFoundation      	0x0000000195409278 __CFSocketManager + 636
2   libsystem_pthread.dylib       	0x00000001952e506c _pthread_start + 320
3   libsystem_pthread.dylib       	0x00000001952dfda0 thread_start + 8

Thread 3:: com.apple.NSEventThread
0   libsystem_kernel.dylib        	0x00000001952abce8 mach_msg_trap + 8
1   libsystem_kernel.dylib        	0x00000001952ac098 mach_msg + 76
2   com.apple.CoreFoundation      	0x00000001953dfe98 __CFRunLoopServiceMachPort + 380
3   com.apple.CoreFoundation      	0x00000001953de36c __CFRunLoopRun + 1216
4   com.apple.CoreFoundation      	0x00000001953dd740 CFRunLoopRunSpecific + 600
5   com.apple.AppKit              	0x0000000197d35ddc _NSEventThread + 216
6   libsystem_pthread.dylib       	0x00000001952e506c _pthread_start + 320
7   libsystem_pthread.dylib       	0x00000001952dfda0 thread_start + 8

Thread 4:
0   libsystem_pthread.dylib       	0x00000001952dfd8c start_wqthread + 0

Thread 5:
0   libsystem_pthread.dylib       	0x00000001952dfd8c start_wqthread + 0

Thread 6:
0   libsystem_pthread.dylib       	0x00000001952dfd8c start_wqthread + 0

Thread 7:
0   libsystem_pthread.dylib       	0x00000001952dfd8c start_wqthread + 0

Thread 8:
0   libsystem_pthread.dylib       	0x00000001952dfd8c start_wqthread + 0

Thread 9:
0   libsystem_pthread.dylib       	0x00000001952dfd8c start_wqthread + 0

Thread 10:
0   libsystem_pthread.dylib       	0x00000001952dfd8c start_wqthread + 0

Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x0000000000000000
    x4: 0x0000000000000000   x5: 0x0000000000000000   x6: 0x0000000000000003   x7: 0x0000000000000000
    x8: 0x00000000000005b9   x9: 0x1741a950321c778d  x10: 0x0000000000020e5e  x11: 0x000000000000005e
   x12: 0x00000002a7eb5524  x13: 0x0000000000000053  x14: 0x00000002a7eb74e4  x15: 0x0000000000000053
   x16: 0x0000000000000148  x17: 0x00000001faccf0b0  x18: 0x0000000130033940  x19: 0x0000000000000006
   x20: 0x000000010341fd40  x21: 0x0000000000000303  x22: 0x000000010341fe20  x23: 0x0000000000000003
   x24: 0x0000000118170228  x25: 0x0000000000000018  x26: 0x0000000000000003  x27: 0x0000000126076ad8
   x28: 0x0000000000000040   fp: 0x000000016d0e28c0   lr: 0x00000001952e4c24
    sp: 0x000000016d0e28a0   pc: 0x00000001952b3cec cpsr: 0x40000000
   far: 0x00000002ba7b8000  esr: 0x56000080


Binary Images:
       0x102d18000 -        0x102f43fff +org.mrtrix.mrview (3.0 - 3.0) <8FAB01DA-23AC-3313-A84A-65B2AD28C4B8> /usr/local/mrtrix3/bin/MRView.app/Contents/MacOS/mrview
       0x103010000 -        0x1031cbfff +libmrtrix.dylib (0) <46BB85B9-310A-3184-91DF-85AF5322248C> /usr/local/mrtrix3/lib/libmrtrix.dylib
       0x103254000 -        0x103287fff +libQt5OpenGL.5.15.2.dylib (0) <0A0C8E65-1322-3B63-8AE2-2315F15DA105> /usr/local/mrtrix3/lib/libQt5OpenGL.5.15.2.dylib
       0x1032b8000 -        0x1032ebfff +libQt5Svg.5.15.2.dylib (0) <D0F2F9FE-79A1-3001-832A-41FCCF752468> /usr/local/mrtrix3/lib/libQt5Svg.5.15.2.dylib
       0x103368000 -        0x1033e3fff  dyld (832.7.1) <B7DB9E8A-A898-3C11-91A0-2B0264F05CB6> /usr/lib/dyld
       0x10346c000 -        0x103877fff +libQt5Widgets.5.15.2.dylib (0) <74D1E273-B064-3ED3-8840-F43818934790> /usr/local/mrtrix3/lib/libQt5Widgets.5.15.2.dylib
       0x1039ec000 -        0x103e07fff +libQt5Gui.5.15.2.dylib (0) <BCFAC221-B860-38BD-862E-F47564CD3DBF> /usr/local/mrtrix3/lib/libQt5Gui.5.15.2.dylib
       0x103f28000 -        0x10402ffff +libQt5Network.5.15.2.dylib (0) <B5C6BDE1-DB09-3DE3-95FD-EA5A22A14AAC> /usr/local/mrtrix3/lib/libQt5Network.5.15.2.dylib
       0x104088000 -        0x10455ffff +libQt5Core.5.15.2.dylib (0) <BCBC1979-16E9-30E1-832C-F9959A60B2AE> /usr/local/mrtrix3/lib/libQt5Core.5.15.2.dylib
       0x1063bc000 -        0x10645ffff +libqcocoa.dylib (0) <69A692C0-A8E6-3DAD-A09B-31EE4A379B70> /usr/local/mrtrix3/bin/plugins/platforms/libqcocoa.dylib
       0x1064ac000 -        0x1064d7fff +libQt5PrintSupport.5.15.2.dylib (0) <F16D30FF-2366-3D65-ADC5-D4FE8A0100E5> /usr/local/mrtrix3/lib/libQt5PrintSupport.5.15.2.dylib
       0x10777c000 -        0x107787fff  libobjc-trampolines.dylib (818.2) <10840110-16BD-3EB2-B9CF-CCAB42259740> /usr/lib/libobjc-trampolines.dylib
       0x107ed0000 -        0x107ed7fff +libqsvg.dylib (0) <0994983C-0EBD-3901-8D34-97483BE40D65> /usr/local/mrtrix3/bin/plugins/imageformats/libqsvg.dylib
       0x1151c4000 -        0x115223fff  com.apple.AppleMetalOpenGLRenderer (1.0 - 1) <C9A177DA-65BC-31AD-8685-E5A974975291> /System/Library/Extensions/AppleMetalOpenGLRenderer.bundle/Contents/MacOS/AppleMetalOpenGLRenderer
       0x115700000 -        0x115bfffff  com.apple.AGXMetal13-3 (172.20.14 - 172.20.14) <1352B37A-9D23-3610-BDEE-C054980814BD> /System/Library/Extensions/AGXMetal13_3.bundle/Contents/MacOS/AGXMetal13_3
       0x195042000 -        0x195043fff  libsystem_blocks.dylib (78) <D3998C8A-7A1C-3962-822C-91DFC11ACBF7> /usr/lib/system/libsystem_blocks.dylib
       0x195044000 -        0x19507bfff  libxpc.dylib (2038.40.38) <D87D7BAA-9E73-3A84-8247-3456B703C302> /usr/lib/system/libxpc.dylib
       0x19507c000 -        0x195093fff  libsystem_trace.dylib (1277.50.1) <D67123A1-A8BC-329C-BC76-830E95EBA1B3> /usr/lib/system/libsystem_trace.dylib
       0x195094000 -        0x195107fff  libcorecrypto.dylib (1000.60.19) <D6B8B5AA-56DF-3E47-A778-007A7AA81372> /usr/lib/system/libcorecrypto.dylib
       0x195108000 -        0x195133fff  libsystem_malloc.dylib (317.40.8) <E47334AF-7E46-3FAE-B71C-9D9B4F1DF1DE> /usr/lib/system/libsystem_malloc.dylib
       0x195134000 -        0x195177fff  libdispatch.dylib (1271.40.12) <68CAA910-6621-32A1-95AE-40594BA75013> /usr/lib/system/libdispatch.dylib
       0x195178000 -        0x1951b0fff  libobjc.A.dylib (818.2) <A4BC7D83-2CA5-32B1-B1CA-1D1431C04916> /usr/lib/libobjc.A.dylib
       0x1951b1000 -        0x1951b3fff  libsystem_featureflags.dylib (28.60.1) <790541FA-8846-39B1-B87F-BCB1C87A6A27> /usr/lib/system/libsystem_featureflags.dylib
       0x1951b4000 -        0x195234fff  libsystem_c.dylib (1439.40.11) <4A324485-84D9-318F-8267-70FF10504289> /usr/lib/system/libsystem_c.dylib
       0x195235000 -        0x195290fff  libc++.1.dylib (904.4) <28BA0783-4F54-33EB-8DC0-DC23CD3BC576> /usr/lib/libc++.1.dylib
       0x195291000 -        0x1952aafff  libc++abi.dylib (904.4) <9291CD18-15AA-33CB-96FD-C5CB7F500470> /usr/lib/libc++abi.dylib
       0x1952ab000 -        0x1952ddfff  libsystem_kernel.dylib (7195.60.75) <35BFD663-2C38-3E0F-A35E-8C1BC6400898> /usr/lib/system/libsystem_kernel.dylib
       0x1952de000 -        0x1952e9fff  libsystem_pthread.dylib (454.60.1) <EDB716F3-BF94-3941-B7DA-D6C91094C645> /usr/lib/system/libsystem_pthread.dylib
       0x1952ea000 -        0x195328fff  libdyld.dylib (832.7.1) <87B502C5-584E-381A-8C99-6105402B8A6E> /usr/lib/system/libdyld.dylib
       0x195329000 -        0x19532ffff  libsystem_platform.dylib (254.60.1) <089E074F-F575-3853-B081-B3B0A23FDA61> /usr/lib/system/libsystem_platform.dylib
       0x195330000 -        0x19535bfff  libsystem_info.dylib (542.40.3) <CFE4640F-4E04-3DC5-80F6-79E0BF7F4FAF> /usr/lib/system/libsystem_info.dylib
       0x19535c000 -        0x195805fff  com.apple.CoreFoundation (6.9 - 1770.300) <396F9604-7574-3C1B-ACA7-C7EB24FE3544> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
       0x195806000 -        0x195a38fff  com.apple.LaunchServices (1122.11 - 1122.11) <D9D92910-FF1A-3868-ABB6-C0E1A256A95B> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
       0x195a39000 -        0x195b11fff  com.apple.gpusw.MetalTools (1.0 - 1) <93384C15-675B-3BB6-989E-A5C3450B9D64> /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools
       0x195b12000 -        0x195d6cfff  libBLAS.dylib (1336.40.1) <7BF1EC0C-692E-3D4A-AD4E-0C8C29C4C178> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
       0x195d6d000 -        0x195db7fff  com.apple.Lexicon-framework (1.0 - 86.1) <38A45B37-F56D-3077-AE41-202435470BD0> /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon
       0x195db8000 -        0x195e1afff  libSparse.dylib (106) <8E6B9AAB-79F7-3ADA-B7CF-DD0FA0DBBCE8> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib
       0x195e1b000 -        0x195ea2fff  com.apple.SystemConfiguration (1.20 - 1.20) <9DDF8F69-ED1D-3CF5-8BE5-45D2D2D32DF1> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
       0x195ea3000 -        0x195ed6fff  libCRFSuite.dylib (50) <29C89933-ADA1-359A-9E5B-CF3A5B4A618E> /usr/lib/libCRFSuite.dylib
       0x195ed7000 -        0x196101fff  libmecabra.dylib (929.1.1) <3CDA7E90-E5E4-3C5B-AA24-FF880AF18D0E> /usr/lib/libmecabra.dylib
       0x196102000 -        0x196493fff  com.apple.Foundation (6.9 - 1770.300) <5CEA7350-F274-39AE-9F27-D9813F2C3A76> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
       0x196494000 -        0x196585fff  com.apple.LanguageModeling (1.0 - 247.1) <4D0D7198-4EB8-3D57-93E7-6F1F7EF4437C> /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
       0x196586000 -        0x1966a8fff  com.apple.CoreDisplay (231.3 - 231.3) <C5041E8F-8A23-3EF8-8F45-E9A80452B397> /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
       0x1966a9000 -        0x196916fff  com.apple.audio.AudioToolboxCore (1.0 - 1180.23) <70295FDE-F110-3D9F-B696-D8E4995D2FE4> /System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore
       0x196917000 -        0x196ae8fff  com.apple.CoreText (677.2.0.5 - 677.2.0.5) <AE3C151D-2022-3A70-9DE4-FA773BF55FDB> /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
       0x196ae9000 -        0x19710dfff  com.apple.audio.CoreAudio (5.0 - 5.0) <0E6AD3C8-3E90-3CB7-BE25-DDD37AFD1917> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
       0x19710e000 -        0x19746bfff  com.apple.security (7.0 - 59754.60.13) <495AE9B1-FAB5-3409-A758-B837B872CD61> /System/Library/Frameworks/Security.framework/Versions/A/Security
       0x19746c000 -        0x1976ddfff  libicucore.A.dylib (66109) <CFFBBD7C-F4CB-3D78-AD6C-86901ECE567F> /usr/lib/libicucore.A.dylib
       0x1976de000 -        0x1976e8fff  libsystem_darwin.dylib (1439.40.11) <1DEB48CE-5F39-3BBC-8D13-00C7636F7FE5> /usr/lib/system/libsystem_darwin.dylib
       0x1976e9000 -        0x1979d8fff  com.apple.CoreServices.CarbonCore (1307 - 1307) <4A7CBA4E-46D7-3C12-9E87-20C15E4FACE6> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
       0x1979d9000 -        0x197a13fff  com.apple.CoreServicesInternal (476 - 476) <1308E62B-1210-3F6A-98AA-7D0C527C6162> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
       0x197a14000 -        0x197a4ffff  com.apple.CSStore (1122.11 - 1122.11) <1B34F90E-E298-3EF6-904F-6903CDEF72EF> /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore
       0x197a50000 -        0x197b1afff  com.apple.framework.IOKit (2.0.2 - 1845.60.2) <B0586F3E-D933-32E2-A51A-3B0DC242DB5F> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
       0x197b1b000 -        0x197b26fff  libsystem_notify.dylib (279.40.4) <C8ADD6C0-5150-359F-8A38-AEAA3351AA5C> /usr/lib/system/libsystem_notify.dylib
       0x197b27000 -        0x197b73fff  libsandbox.1.dylib (1441.60.4) <010546C0-030F-3E97-8CDF-4AA5665917FA> /usr/lib/libsandbox.1.dylib
       0x197b74000 -        0x1988d2fff  com.apple.AppKit (6.9 - 2022.20.119) <78F21674-643E-3793-B1CD-C8BDBC76BAD5> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
       0x1988d3000 -        0x198b00fff  com.apple.UIFoundation (1.0 - 726.11) <085965EE-A855-340D-8022-805BB9F45A87> /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
       0x198b01000 -        0x198b13fff  com.apple.UniformTypeIdentifiers (633.0.2 - 633.0.2) <894D4234-E2B3-3154-B7C5-C7C1042100A0> /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers
       0x198b14000 -        0x198c82fff  com.apple.desktopservices (1.17 - 1346.2.1) <9FB6D481-1E7B-3A98-AB83-B6F7BF988AF9> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
       0x198f3c000 -        0x199646fff  libnetwork.dylib (2288.60.5) <A9B6599B-C0A3-3E26-93A4-0BCCCCDB5D30> /usr/lib/libnetwork.dylib
       0x199647000 -        0x199ad4fff  com.apple.CFNetwork (1209.1 - 1209.1) <BE1B59DE-CE44-3CAE-897A-735E500ABB73> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
       0x199ad5000 -        0x199ae4fff  libsystem_networkextension.dylib (1295.60.5) <399ACCA2-77CA-3A30-9930-1382F8DBBAD3> /usr/lib/system/libsystem_networkextension.dylib
       0x199ae5000 -        0x199ae6fff  libenergytrace.dylib (22) <2AE008F9-387E-3386-8324-27E5A1574598> /usr/lib/libenergytrace.dylib
       0x199ae7000 -        0x199b3bfff  libMobileGestalt.dylib (978.60.2) <D8DD322B-F5E3-3398-B549-51AF91E7935D> /usr/lib/libMobileGestalt.dylib
       0x199b3c000 -        0x199b53fff  libsystem_asl.dylib (385) <B25E1954-9781-3238-8B1C-0CF44B5FA684> /usr/lib/system/libsystem_asl.dylib
       0x199b54000 -        0x199b6dfff  com.apple.TCC (1.0 - 1) <E0CEAEA4-8553-31F2-831B-35D8443CA4A3> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
       0x199b6e000 -        0x199ed3fff  com.apple.SkyLight (1.600.0 - 569.6) <936C1A3C-0381-3277-B5A2-29333312F86F> /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
       0x199ed4000 -        0x19a4c1fff  com.apple.CoreGraphics (2.0 - 1463.2.2) <D6C003BF-A49F-37E4-ADE1-31AFA72DDB41> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
       0x19a4c2000 -        0x19a5b7fff  com.apple.ColorSync (4.13.0 - 3472) <DFF79761-3AF6-33F4-BAD2-8A276AECE01D> /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync
       0x19a5b8000 -        0x19a613fff  com.apple.HIServices (1.22 - 713) <314B0EC5-1646-3A34-9A1B-FB3CE405EC29> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
       0x19a96f000 -        0x19ad20fff  com.apple.CoreData (120 - 1044.3) <0DFDE2DB-2C07-3DBE-872E-CFD24D675C43> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
       0x19ad21000 -        0x19ad38fff  com.apple.ProtocolBuffer (1 - 285.20.8.8.1) <A2A5B698-8017-3DCE-BD07-C9CC7A807B95> /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
       0x19ad39000 -        0x19aee0fff  libsqlite3.dylib (321.1) <23EE8E77-50C4-35E8-A3C7-04C71FBD8565> /usr/lib/libsqlite3.dylib
       0x19aee1000 -        0x19af58fff  com.apple.Accounts (113 - 113) <718942B7-C0EF-3B33-861B-5BA79D5A1A92> /System/Library/Frameworks/Accounts.framework/Versions/A/Accounts
       0x19af59000 -        0x19af70fff  com.apple.commonutilities (8.0 - 900) <49536612-8785-3D31-A128-266D79ADC772> /System/Library/PrivateFrameworks/CommonUtilities.framework/Versions/A/CommonUtilities
       0x19af71000 -        0x19aff5fff  com.apple.BaseBoard (526 - 526) <7A3F1C5D-442D-35AB-8B63-D13EC7638F1A> /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard
       0x19aff6000 -        0x19b046fff  com.apple.RunningBoardServices (1.0 - 505.60.2) <C1D71AE3-7493-3A7C-9717-EB6A6BFE451E> /System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices
       0x19b047000 -        0x19b0bafff  com.apple.AE (918.0.1 - 918.0.1) <311D1113-C432-3442-BB70-8605090A5E5C> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
       0x19b0bb000 -        0x19b0c2fff  libdns_services.dylib (1310.60.4) <8FFC83B0-344F-3FE7-8FA9-8AE1AAFB99BB> /usr/lib/libdns_services.dylib
       0x19b0c3000 -        0x19b0cafff  libsystem_symptoms.dylib (1431.60.1) <CF9E7636-168A-36DD-95F0-6CA76B91D3DC> /usr/lib/system/libsystem_symptoms.dylib
       0x19b0cb000 -        0x19b227fff  com.apple.Network (1.0 - 1) <6112E930-7DB0-369D-9536-930C8C3CD690> /System/Library/Frameworks/Network.framework/Versions/A/Network
       0x19b228000 -        0x19b24dfff  com.apple.analyticsd (1.0 - 1) <4CDE85B1-CEAF-3EF9-ADB2-8A3D3FD5AAB4> /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics
       0x19b24e000 -        0x19b250fff  libDiagnosticMessagesClient.dylib (112) <BD85EAE3-2614-3867-83D8-0DBE045856A2> /usr/lib/libDiagnosticMessagesClient.dylib
       0x19b251000 -        0x19b29cfff  com.apple.spotlight.metadata.utilities (1.0 - 2150.7.2) <2A982B2F-4F96-31DB-89CC-37445DF62FDE> /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities
       0x19b29d000 -        0x19b336fff  com.apple.Metadata (10.7.0 - 2150.7.2) <FA920EDA-E34F-3C8F-9565-EA0695E8C371> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
       0x19b337000 -        0x19b33dfff  com.apple.DiskArbitration (2.7 - 2.7) <07975F48-4A37-3FD9-9DD2-3367AAE9D692> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
       0x19b33e000 -        0x19b65cfff  com.apple.vImage (8.1 - 544) <818B9B01-AA84-3D24-A04D-00EA8D66C14F> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
       0x19b65d000 -        0x19b90ffff  com.apple.QuartzCore (1.11 - 925.5) <0FB3C46F-6DDF-3FDD-BF81-BF62A7553659> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
       0x19b910000 -        0x19b952fff  libFontRegistry.dylib (309) <6901EFA1-C468-3C81-96A6-8B173C0E9B2B> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
       0x19b953000 -        0x19ba6cfff  com.apple.coreui (2.1 - 689.4) <6B6F13C9-A49E-3B86-A23A-FE783177B980> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
       0x19ba6d000 -        0x19bb4dfff  com.apple.ViewBridge (551.3 - 551.3) <4F02AAF6-773F-33B3-A881-8FE458C996B2> /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge
       0x19bb4e000 -        0x19bb58fff  com.apple.PerformanceAnalysis (1.275 - 275) <8A942FDF-004C-373E-83A8-46D5F918B377> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
       0x19bb59000 -        0x19bb66fff  com.apple.OpenDirectory (11.1 - 230.40.1) <BF1D3476-D716-3AC4-8266-BF8E63A5F4C4> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
       0x19bb67000 -        0x19bb86fff  com.apple.CFOpenDirectory (11.1 - 230.40.1) <94AFB779-A06B-3AE4-8609-E9FDEF6DCF4E> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
       0x19bb87000 -        0x19bb8ffff  com.apple.CoreServices.FSEvents (1290.40.2 - 1290.40.2) <09DE727C-4BA5-33B7-9811-5F0CA5C86F31> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
       0x19bb90000 -        0x19bbb4fff  com.apple.coreservices.SharedFileList (144 - 144) <44F30AE5-8DC1-3726-8D6E-8811972BDB60> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
       0x19bbb5000 -        0x19bbb7fff  libapp_launch_measurement.dylib (14.1) <EE51FF2D-B44F-3027-92BA-42E0FDA6578C> /usr/lib/libapp_launch_measurement.dylib
       0x19bbb8000 -        0x19bbfbfff  com.apple.CoreAutoLayout (1.0 - 21.10.1) <289ACB53-3AFD-3898-9867-BDD113D0F249> /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout
       0x19bbfc000 -        0x19bce7fff  libxml2.2.dylib (34.8) <27B1CD43-A3F5-38D6-8AF5-B5F1977E5EA5> /usr/lib/libxml2.2.dylib
       0x19bce8000 -        0x19bd3afff  com.apple.CoreVideo (1.8 - 408.4) <B877220F-1199-3F9F-B00E-2DD96231D7DF> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
       0x19bd3b000 -        0x19bd3dfff  com.apple.loginsupport (1.0 - 1) <08ABC43D-FFEE-3F47-804A-D2510D814E42> /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
       0x19bd66000 -        0x19bd85fff  com.apple.UserManagement (1.0 - 1) <6B3CD796-2A5C-3613-BAC3-AA7BD125D26B> /System/Library/PrivateFrameworks/UserManagement.framework/Versions/A/UserManagement
       0x19cb34000 -        0x19cb45fff  libsystem_containermanager.dylib (318.60.1) <165B6DCF-6B92-3EC9-84D3-98FBFAB26EA1> /usr/lib/system/libsystem_containermanager.dylib
       0x19cb46000 -        0x19cb57fff  com.apple.IOSurface (289.3 - 289.3) <9FF9A9E1-CEE6-3B60-B906-9F841A8C458F> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
       0x19cb58000 -        0x19cb61fff  com.apple.IOAccelerator (439.52 - 439.52) <A26D0961-8422-303E-A46E-F8DC600E4F98> /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
       0x19cb62000 -        0x19cc58fff  com.apple.Metal (244.32.7 - 244.32.7) <3184F3A5-FDB4-3D75-BA6E-DA1EB8BCF867> /System/Library/Frameworks/Metal.framework/Versions/A/Metal
       0x19cc59000 -        0x19cc78fff  com.apple.audio.caulk (1.0 - 70) <3C740EA2-D7BA-31FA-9540-63E5E5F3A0F7> /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk
       0x19cc79000 -        0x19cd6ffff  com.apple.CoreMedia (1.0 - 2760.6.4.6) <5F17C1F2-DF73-3C8A-B049-E270941A1196> /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia
       0x19cd70000 -        0x19cec8fff  libFontParser.dylib (305.2.0.6) <C3FF494B-E873-3E1C-9481-60A5D00A12E3> /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib
       0x19cec9000 -        0x19d1d8fff  com.apple.HIToolbox (2.1.1 - 1060.4) <5D42A3EB-F109-386B-BA75-5F72E264A3B9> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
       0x19d1d9000 -        0x19d1f0fff  com.apple.framework.DFRFoundation (1.0 - 265) <6F86CE64-F282-3F37-BCE4-9E5A38449A9D> /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation
       0x19d1f1000 -        0x19d1f4fff  com.apple.dt.XCTTargetBootstrap (1.0 - 17500) <AE6F2D6D-A031-3F81-B05A-0B67AD3F502D> /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap
       0x19d1f5000 -        0x19d21ffff  com.apple.CoreSVG (1.0 - 149) <5FD325DB-4A8C-32E2-B1B6-FAB9C8DD2DCC> /System/Library/PrivateFrameworks/CoreSVG.framework/Versions/A/CoreSVG
       0x19d220000 -        0x19d43dfff  com.apple.ImageIO (3.3.0 - 2130.2.7) <3B7DCBB0-0493-3818-A156-ACCB65E66323> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
       0x19d43e000 -        0x19d75efff  com.apple.CoreImage (16.1.0 - 1120.10) <8CC24666-D076-36FD-91F1-C083087D5D51> /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
       0x19d75f000 -        0x19d7b6fff  com.apple.MetalPerformanceShaders.MPSCore (1.0 - 1) <CF0159EB-938F-3F20-AF71-D8DFB502D71A> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore
       0x19d7b7000 -        0x19d7bbfff  libsystem_configuration.dylib (1109.60.2) <5D4DB975-F8DC-3B07-8F2B-4054CCA4B9B6> /usr/lib/system/libsystem_configuration.dylib
       0x19d7bc000 -        0x19d7c0fff  libsystem_sandbox.dylib (1441.60.4) <0EE4CE47-4715-3EE3-93CA-F4863FE29A5C> /usr/lib/system/libsystem_sandbox.dylib
       0x19d7c1000 -        0x19d7c2fff  com.apple.AggregateDictionary (1.0 - 1) <38AB1AE3-0555-343B-85BB-AE9E529D9E91> /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary
       0x19d7c3000 -        0x19d7c6fff  com.apple.AppleSystemInfo (3.1.5 - 3.1.5) <4E760B95-F152-3D6C-A879-941D7F7046F3> /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo
       0x19d7c7000 -        0x19d7c8fff  liblangid.dylib (136) <9BC69285-920A-3469-BDCC-3EE821704AE0> /usr/lib/liblangid.dylib
       0x19d7c9000 -        0x19d857fff  com.apple.CoreNLP (1.0 - 245) <1015A6D8-5D99-3CB3-AC48-55F053134704> /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP
       0x19d858000 -        0x19d85ffff  com.apple.LinguisticData (1.0 - 399) <0C2C6A0B-352B-3A10-9A64-7A467BC0619F> /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData
       0x19d860000 -        0x19dd14fff  libBNNS.dylib (288.60.2) <A4896748-ACA6-3491-842E-59A6E1A386DF> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
       0x19dd15000 -        0x19ddc7fff  libvDSP.dylib (760.40.6) <C9471CC1-5622-390D-A38A-F730A17924C4> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
       0x19ddc8000 -        0x19dddafff  com.apple.CoreEmoji (1.0 - 128) <4790C8CE-AD87-3F74-9721-4A3F931E6B5D> /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
       0x19dddb000 -        0x19dde5fff  com.apple.IOMobileFramebuffer (343.0.0 - 343.0.0) <761968D8-6440-381D-AA1E-A01B10F5766E> /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer
       0x19dde6000 -        0x19deb1fff  com.apple.framework.CoreWLAN (16.0 - 1657) <CA1BD1AF-D57A-3B06-97B1-0AC71F439685> /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
       0x19deb2000 -        0x19e0b1fff  com.apple.CoreUtils (6.5 - 650.5) <6A28B5ED-404A-3179-8B43-D1210BDEB176> /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils
       0x19e0b2000 -        0x19e0d4fff  com.apple.MobileKeyBag (2.0 - 1.0) <E5430E72-A4F5-3E0E-80FE-D18010F58F6E> /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag
       0x19e0d5000 -        0x19e0e4fff  com.apple.AssertionServices (1.0 - 505.60.2) <1CD9B6A5-00E1-3A26-A389-E1D93B077876> /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices
       0x19e0e5000 -        0x19e16afff  com.apple.securityfoundation (6.0 - 55240.40.4) <B74FE7B0-C339-3483-95F8-B219820F5540> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
       0x19e16b000 -        0x19e174fff  com.apple.coreservices.BackgroundTaskManagement (1.0 - 104) <42AFCFE1-F6F3-30D4-A278-FF43847F5733> /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement
       0x19e175000 -        0x19e17afff  com.apple.xpc.ServiceManagement (1.0 - 1) <F21342A9-E6E0-3535-B40B-96E62A27ADA3> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
       0x19e17b000 -        0x19e17dfff  libquarantine.dylib (119.40.2) <C55DCBDE-51FF-3D90-AF78-9BE9F8FC8DD6> /usr/lib/system/libquarantine.dylib
       0x19e17e000 -        0x19e18dfff  libCheckFix.dylib (31) <A9A06358-3C31-30B8-89BF-02C7274E686B> /usr/lib/libCheckFix.dylib
       0x19e18e000 -        0x19e1a4fff  libcoretls.dylib (169) <CBE8AF33-CAFF-36F8-B36A-B8F3ACCC0D05> /usr/lib/libcoretls.dylib
       0x19e1a5000 -        0x19e1b5fff  libbsm.0.dylib (68.40.1) <A42FE2FA-6D61-3A6B-BC18-D81CF9EEC26E> /usr/lib/libbsm.0.dylib
       0x19e1b6000 -        0x19e1fafff  libmecab.dylib (929.1.1) <022FB4B7-EDB7-3637-9E32-57EDF231EFBD> /usr/lib/libmecab.dylib
       0x19e1fb000 -        0x19e1fffff  libgermantok.dylib (24) <DAD2668B-A6FD-34C9-8AEE-A2CFBD4305B9> /usr/lib/libgermantok.dylib
       0x19e200000 -        0x19e215fff  libLinearAlgebra.dylib (1336.40.1) <EF07960C-DBF1-34A0-9F03-E8969D4BA4E8> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
       0x19e216000 -        0x19e419fff  com.apple.MetalPerformanceShaders.MPSNeuralNetwork (1.0 - 1) <4193E38D-0646-36C8-AD8B-E5F22A68846D> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork
       0x19e41a000 -        0x19e463fff  com.apple.MetalPerformanceShaders.MPSRayIntersector (1.0 - 1) <B27589D3-909F-3C86-8597-762ED8052082> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector
       0x19e464000 -        0x19e59efff  com.apple.MLCompute (1.0 - 1) <CD745414-6E80-3BCD-9EFE-CE192AC0AEB4> /System/Library/Frameworks/MLCompute.framework/Versions/A/MLCompute
       0x19e59f000 -        0x19e5cdfff  com.apple.MetalPerformanceShaders.MPSMatrix (1.0 - 1) <5867536B-0869-3ED4-AB5D-60E0FD9BFE70> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix
       0x19e5ce000 -        0x19e609fff  com.apple.MetalPerformanceShaders.MPSNDArray (1.0 - 1) <08BD5CCA-0485-3C1F-A3E0-5C1A2058E533> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray
       0x19e60a000 -        0x19e694fff  com.apple.MetalPerformanceShaders.MPSImage (1.0 - 1) <24F9DB17-EB5E-3AA9-A15C-B0DBCC5A8991> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage
       0x19e695000 -        0x19e6a4fff  com.apple.AppleFSCompression (125 - 1.0) <D5F93E39-B11F-3862-93CD-BB162E078EB9> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
       0x19e6a5000 -        0x19e6b1fff  libbz2.1.0.dylib (44) <78DA9846-BC91-3FEF-BCAE-DA445E2F4007> /usr/lib/libbz2.1.0.dylib
       0x19e6b2000 -        0x19e6b6fff  libsystem_coreservices.dylib (127) <1F4E0C2D-9A82-3E3F-B546-1F23A3B180B5> /usr/lib/system/libsystem_coreservices.dylib
       0x19e6b7000 -        0x19e6e7fff  com.apple.CoreServices.OSServices (1122.11 - 1122.11) <EFFA0C4E-A0C1-3970-BE40-A0A46A35C180> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
       0x19e6e8000 -        0x19e7fdfff  com.apple.AuthKit (1.0 - 1) <6C08E7C4-862E-36F7-B8B0-6A7BC9B010AA> /System/Library/PrivateFrameworks/AuthKit.framework/Versions/A/AuthKit
       0x19e8a5000 -        0x19e8b6fff  libz.1.dylib (76) <5EA0F5F6-7974-3DF8-9862-CE916C5EC980> /usr/lib/libz.1.dylib
       0x19e8b7000 -        0x19e8e4fff  libsystem_m.dylib (3186.40.2) <129930A8-F06B-3AD4-BA84-21549591F87A> /usr/lib/system/libsystem_m.dylib
       0x19e8e5000 -        0x19e8e5fff  libcharset.1.dylib (59) <DF7E5E0B-8534-3D78-96D4-519E0F22DD02> /usr/lib/libcharset.1.dylib
       0x19e8e6000 -        0x19e8ebfff  libmacho.dylib (973.4) <29AD4E0E-F6A4-313F-AFA3-825CA94917BD> /usr/lib/system/libmacho.dylib
       0x19e8ec000 -        0x19e907fff  libkxld.dylib (7195.60.75) <8BEBE228-8A15-383D-8E30-A20B2E2082B5> /usr/lib/system/libkxld.dylib
       0x19e908000 -        0x19e915fff  libcommonCrypto.dylib (60178.40.2) <FEDF1785-B89A-3EFB-B95E-467645AC6113> /usr/lib/system/libcommonCrypto.dylib
       0x19e916000 -        0x19e920fff  libunwind.dylib (200.10) <21A28401-C508-38BE-A7CF-C2A56AB3C311> /usr/lib/system/libunwind.dylib
       0x19e921000 -        0x19e928fff  liboah.dylib (203.13.2) <F36DDACF-B46B-3813-8ADE-A275209588BF> /usr/lib/liboah.dylib
       0x19e929000 -        0x19e931fff  libcopyfile.dylib (173.40.2) <8AE5EFE8-BBA5-380B-9165-D350CD7EA3CE> /usr/lib/system/libcopyfile.dylib
       0x19e932000 -        0x19e935fff  libcompiler_rt.dylib (102.2) <39A3467E-CBED-3C4A-B0BC-39C0093842E9> /usr/lib/system/libcompiler_rt.dylib
       0x19e936000 -        0x19e938fff  libsystem_collections.dylib (1439.40.11) <5EEC397D-2CAA-39D1-8B82-6370E633FDC9> /usr/lib/system/libsystem_collections.dylib
       0x19e939000 -        0x19e93bfff  libsystem_secinit.dylib (87.60.1) <04EF7D20-ABBD-3DB1-B990-278887044735> /usr/lib/system/libsystem_secinit.dylib
       0x19e93c000 -        0x19e93efff  libremovefile.dylib (49.40.3) <8FAF9121-D546-3319-B366-1C50BAF59FE8> /usr/lib/system/libremovefile.dylib
       0x19e93f000 -        0x19e93ffff  libkeymgr.dylib (31) <3EF55D83-6DD4-376B-8C0B-5B12CD0D3D94> /usr/lib/system/libkeymgr.dylib
       0x19e940000 -        0x19e948fff  libsystem_dnssd.dylib (1310.60.4) <E498E2D5-BD16-3458-AF9C-B4EE888935CB> /usr/lib/system/libsystem_dnssd.dylib
       0x19e949000 -        0x19e94efff  libcache.dylib (83) <BF1D536B-540F-374E-BA7B-EB2429F334CD> /usr/lib/system/libcache.dylib
       0x19e94f000 -        0x19e950fff  libSystem.B.dylib (1292.60.1) <03EDCD03-5B2F-353E-BD06-6313B8279E9C> /usr/lib/libSystem.B.dylib
       0x19e951000 -        0x19e954fff  libfakelink.dylib (3) <B5AF719C-EC9A-3714-9E29-65FA0920BFE4> /usr/lib/libfakelink.dylib
       0x19e955000 -        0x19e955fff  com.apple.SoftLinking (1.0 - 1) <DD7C1F9C-6512-35D2-9391-450628D67E19> /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking
       0x19e956000 -        0x19e990fff  libpcap.A.dylib (98.40.1) <8056A56E-73C0-36F1-849E-262FD7C33550> /usr/lib/libpcap.A.dylib
       0x19e991000 -        0x19ea83fff  libiconv.2.dylib (59) <B745BF03-D15C-3B71-9774-894201EC76CF> /usr/lib/libiconv.2.dylib
       0x19ea84000 -        0x19ea99fff  libcmph.dylib (8) <1B539AD1-EB4E-3E4E-9936-A8FF9F3D65B9> /usr/lib/libcmph.dylib
       0x19ea9a000 -        0x19eb0afff  libarchive.2.dylib (83.40.4) <5CBBFEF0-AE9F-3967-B916-68EEC897969D> /usr/lib/libarchive.2.dylib
       0x19eb0b000 -        0x19eb7bfff  com.apple.SearchKit (1.4.1 - 1.4.1) <7A1F87D4-B5D2-3F0D-B732-FA696B45B882> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
       0x19eb7c000 -        0x19eb7dfff  libThaiTokenizer.dylib (3) <74A6D3FA-8A99-3303-9A8B-26620CC232AE> /usr/lib/libThaiTokenizer.dylib
       0x19eb7e000 -        0x19eba2fff  com.apple.applesauce (1.0 - 16.26) <F38BC353-F9A4-3762-AEF4-DA4692FE80B6> /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce
       0x19eba3000 -        0x19ebb9fff  libapple_nghttp2.dylib (1.41) <7ABA6797-C912-3F49-BCA5-2405D30BEAF9> /usr/lib/libapple_nghttp2.dylib
       0x19ebba000 -        0x19ebcbfff  libSparseBLAS.dylib (1336.40.1) <147B4C34-5369-39C6-99A3-559800DB28A5> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
       0x19ebcc000 -        0x19ebcdfff  com.apple.MetalPerformanceShaders.MetalPerformanceShaders (1.0 - 1) <B22701AF-CE19-3635-AF1D-FB69EB0E6A7C> /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
       0x19ebce000 -        0x19ebd2fff  libpam.2.dylib (28.40.1) <0BFA77F1-A62A-356C-B901-3D158E1B7E95> /usr/lib/libpam.2.dylib
       0x19ebd3000 -        0x19ebeafff  libcompression.dylib (96.40.6) <A01701F6-D89C-3E89-B429-79DB81426F12> /usr/lib/libcompression.dylib
       0x19ebeb000 -        0x19ebeffff  libQuadrature.dylib (7) <B2DD0691-70A9-3EE4-A5DC-D2FFFE71ECC5> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
       0x19ebf0000 -        0x19f09afff  libLAPACK.dylib (1336.40.1) <E94DE514-61CA-3C60-B3D7-C9257223FDA5> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
       0x19f09b000 -        0x19f0ecfff  com.apple.DictionaryServices (1.2 - 341) <0B2A9791-DAE5-3D19-B10E-834F807455DE> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
       0x19f0ed000 -        0x19f105fff  liblzma.5.dylib (16) <2F09739A-498C-39D9-823E-BA62312F540E> /usr/lib/liblzma.5.dylib
       0x19f106000 -        0x19f107fff  libcoretls_cfhelpers.dylib (169) <15F18276-CC9C-3822-97F0-0C5B6F33B145> /usr/lib/libcoretls_cfhelpers.dylib
       0x19f108000 -        0x19f1eefff  com.apple.APFS (1677.60.23 - 1677.60.23) <39013AA0-2845-349F-A323-9D7BC3B74C2D> /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS
       0x19f1ef000 -        0x19f1fcfff  libxar.1.dylib (452) <01CD3C4E-C3F8-3CDB-B4CF-2F59B236C0B9> /usr/lib/libxar.1.dylib
       0x19f1fd000 -        0x19f200fff  libutil.dylib (58.40.2) <857F5F7E-6554-3F68-AC00-B2F2E43B4249> /usr/lib/libutil.dylib
       0x19f201000 -        0x19f22afff  libxslt.1.dylib (17.2) <AAC88056-759F-32E3-8388-D9FF2EB55B61> /usr/lib/libxslt.1.dylib
       0x19f22b000 -        0x19f235fff  libChineseTokenizer.dylib (37) <F24F3F8F-9D4A-38BD-951E-8C9F19037DBB> /usr/lib/libChineseTokenizer.dylib
       0x19f236000 -        0x19f2aafff  libvMisc.dylib (760.40.6) <48EB6D40-7B0D-3CB0-9F4D-1481ABB81222> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
       0x19f2ab000 -        0x19f33cfff  libate.dylib (3.0.4) <942482F9-681B-3238-9849-D9C02457D978> /usr/lib/libate.dylib
       0x19f33d000 -        0x19f344fff  libIOReport.dylib (64) <A7FF0874-7F11-3BEC-A602-1E85F832832B> /usr/lib/libIOReport.dylib
       0x19f345000 -        0x19f371fff  com.apple.CrashReporterSupport (10.13 - 15047) <10E95DD9-8005-3495-93C0-6A0FB36A97E5> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
       0x19f458000 -        0x19f45ffff  libMatch.1.dylib (38) <373E5F26-615E-356B-AC28-70EA9204AF22> /usr/lib/libMatch.1.dylib
       0x19f460000 -        0x19f4e3fff  libCoreStorage.dylib (554) <7C857783-8F9D-3ED6-9234-47E608A2DDD0> /usr/lib/libCoreStorage.dylib
       0x19f4e4000 -        0x19f52ffff  com.apple.AppleVAFramework (6.1.3 - 6.1.3) <AB0B7ABC-9FD1-3476-A16A-35F6501D1540> /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA
       0x19f530000 -        0x19f549fff  libexpat.1.dylib (26) <8B917E86-B3FC-3B18-9DD2-4D157E77320B> /usr/lib/libexpat.1.dylib
       0x19f54a000 -        0x19f553fff  libheimdal-asn1.dylib (597.40.10) <08B0980A-F6E1-3B41-81D5-8C4A7566F55D> /usr/lib/libheimdal-asn1.dylib
       0x19f554000 -        0x19f566fff  com.apple.IconFoundation (479.3 - 479.3) <D62CCE4A-04DE-3DC9-92A1-B6196B3891E8> /System/Library/PrivateFrameworks/IconFoundation.framework/Versions/A/IconFoundation
       0x19f567000 -        0x19f5cdfff  com.apple.IconServices (479.3 - 479.3) <FC2A8690-F2D4-3EA3-869C-E685C2BCE873> /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
       0x19f5ce000 -        0x19f671fff  com.apple.MediaExperience (1.0 - 1) <F794A130-19C3-34F4-8678-016A36509465> /System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience
       0x19f672000 -        0x19f698fff  com.apple.persistentconnection (1.0 - 1.0) <D423D474-AB61-3F4E-9508-ED25B9E12012> /System/Library/PrivateFrameworks/PersistentConnection.framework/Versions/A/PersistentConnection
       0x19f699000 -        0x19f6a6fff  com.apple.GraphVisualizer (1.0 - 100.1) <4C8E4148-A718-392A-B617-787534895649> /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer
       0x19f6a7000 -        0x19fab9fff  com.apple.vision.FaceCore (4.3.2 - 4.3.2) <E5805F32-080F-3690-9D51-918C266A3E8E> /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
       0x19faba000 -        0x19fafbfff  com.apple.OTSVG (1.0 - 677.2.0.5) <7850AA94-4208-3CF7-8CC0-4889F36AB01D> /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG
       0x19fafc000 -        0x19fb03fff  com.apple.xpc.AppServerSupport (1.0 - 2038.40.38) <911AB008-23FE-3134-B433-0321073F0BDC> /System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport
       0x19fb04000 -        0x19fb12fff  libhvf.dylib (1.0 - $[CURRENT_PROJECT_VERSION]) <145974E6-1A9C-3481-A55E-529E84F0CD94> /System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib
       0x19fb13000 -        0x19fb15fff  libspindump.dylib (295) <52B9391B-7757-3A44-B435-E8A640F3B505> /usr/lib/libspindump.dylib
       0x19fb16000 -        0x19fbcafff  com.apple.Heimdal (4.0 - 2.0) <8B0D70D0-3C4C-3A1E-B55C-C2F2AF0C5F32> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
       0x19fbcb000 -        0x19fbe5fff  com.apple.login (3.0 - 3.0) <E74E590C-66D8-303D-9162-976BFFA449A0> /System/Library/PrivateFrameworks/login.framework/Versions/A/login
       0x19fd59000 -        0x19fd5cfff  libodfde.dylib (26) <4FF6481B-3170-3FA4-8FAB-C5C4D9350B64> /usr/lib/libodfde.dylib
       0x19fd5d000 -        0x19fdbcfff  com.apple.bom (14.0 - 233) <DCDA5BE2-828A-3CC7-8801-8E0ECDF3DCE4> /System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom
       0x19fdbd000 -        0x19fe00fff  com.apple.AppleJPEG (1.0 - 1) <1FC15817-A4AF-39EC-83DB-7EF49DCC49EE> /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
       0x19fe01000 -        0x19fee5fff  libJP2.dylib (2130.2.7) <D8C55474-A9B6-3B5E-A7BC-98CC57204F7C> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
       0x19fee6000 -        0x19fee9fff  com.apple.WatchdogClient.framework (1.0 - 98.60.1) <E800B674-7E5F-36DB-8461-E0B08D3F8594> /System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient
       0x19feea000 -        0x19ff1efff  com.apple.MultitouchSupport.framework (4400.28 - 4400.28) <79604DF8-4953-3B82-B118-7D4797A5E1BD> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
       0x19ff1f000 -        0x1a0044fff  com.apple.VideoToolbox (1.0 - 2760.6.4.6) <7225282B-0656-37B2-8A61-DC1D4B005000> /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox
       0x1a0045000 -        0x1a0077fff  libAudioToolboxUtility.dylib (1180.23) <7AE3473A-AC33-34E8-B2A1-28CBB86BD302> /usr/lib/libAudioToolboxUtility.dylib
       0x1a0078000 -        0x1a009efff  libPng.dylib (2130.2.7) <7E71956F-03EA-383D-A481-C5F233865CD7> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
       0x1a009f000 -        0x1a00f9fff  libTIFF.dylib (2130.2.7) <725BCDFF-8637-3FFC-93D1-FCA7E0C2CE4A> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
       0x1a00fa000 -        0x1a0116fff  com.apple.IOPresentment (53 - 37) <F4CC2ABF-FAAD-3F34-9CB9-A012C9C1E387> /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
       0x1a0117000 -        0x1a011bfff  com.apple.GPUWrangler (6.2.2 - 6.2.2) <FD5B24DE-DFDE-3FCE-AED6-6C49C0FD12A9> /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler
       0x1a011c000 -        0x1a011efff  libRadiance.dylib (2130.2.7) <635C3E69-E2B0-31E3-B004-A5FF0F5E9A7B> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
       0x1a011f000 -        0x1a0124fff  com.apple.DSExternalDisplay (3.1 - 380) <56A2B5E6-B0B0-3F89-AD12-9EC961231366> /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay
       0x1a0125000 -        0x1a0145fff  libJPEG.dylib (2130.2.7) <7E5DE231-8044-311C-AB96-788C1AA406CA> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
       0x1a0146000 -        0x1a0175fff  com.apple.ATSUI (1.0 - 1) <9E776419-229D-30CC-AD40-193F29B2C670> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI
       0x1a0176000 -        0x1a017afff  libGIF.dylib (2130.2.7) <127658D4-6452-38A2-808E-161086C94C47> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
       0x1a017b000 -        0x1a0184fff  com.apple.CMCaptureCore (1.0 - 80.17.1.1) <A89879A4-F679-3168-A50A-8F83FBE3184C> /System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore
       0x1a0185000 -        0x1a01ccfff  com.apple.print.framework.PrintCore (16 - 531) <456F8F80-DDEC-397C-B43C-EE799ECDA3F7> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
       0x1a01cd000 -        0x1a0281fff  com.apple.TextureIO (3.10.9 - 3.10.9) <D54C961C-800D-3309-8E90-1EB8EF470CD9> /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO
       0x1a0282000 -        0x1a028afff  com.apple.InternationalSupport (1.0 - 60) <55754151-4F79-342F-8D91-53A16E9E83B8> /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport
       0x1a028b000 -        0x1a02fffff  com.apple.datadetectorscore (8.0 - 674) <44607BEB-812C-3152-AFE6-51C960D15D12> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
       0x1a0300000 -        0x1a0360fff  com.apple.UserActivity (435 - 435) <33EC085E-4106-3662-9FBE-6D3687ABFF34> /System/Library/PrivateFrameworks/UserActivity.framework/Versions/A/UserActivity
       0x1a0361000 -        0x1a0ac9fff  com.apple.MediaToolbox (1.0 - 2760.6.4.6) <CAC6C96D-68F9-3462-AD23-5ABB7381A091> /System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox
       0x1a0ffd000 -        0x1a1032fff  libSessionUtility.dylib (76.7) <55B76612-B425-3BC5-B828-900FE52745A3> /System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib
       0x1a1033000 -        0x1a1157fff  com.apple.audio.toolbox.AudioToolbox (1.14 - 1.14) <2A0EA878-17A0-3D13-9FE0-D3AB09DD5187> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
       0x1a1158000 -        0x1a11c1fff  com.apple.audio.AudioSession (1.0 - 76.7) <BDC23BAB-CFE3-32DB-B8AF-C240056C6DF3> /System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession
       0x1a11c2000 -        0x1a11d4fff  libAudioStatistics.dylib (25.1) <E02FB648-3DFA-349C-9F5C-FECCF8E99A1C> /usr/lib/libAudioStatistics.dylib
       0x1a11d5000 -        0x1a11e8fff  com.apple.speech.synthesis.framework (9.0.51 - 9.0.51) <2205CF41-DFC6-325B-B2A7-EBB0DD2F73BE> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
       0x1a11e9000 -        0x1a1256fff  com.apple.ApplicationServices.ATS (377 - 516) <D4C1DA84-5F74-3CB6-97A9-46C6E91BA974> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
       0x1a1257000 -        0x1a126ffff  libresolv.9.dylib (68) <62492883-5FA7-39E0-ADED-F0788266FFD2> /usr/lib/libresolv.9.dylib
       0x1a1270000 -        0x1a1283fff  libsasl2.2.dylib (214) <18D55C2F-B0DE-3EC4-9AA6-963970D47DCA> /usr/lib/libsasl2.2.dylib
       0x1a1397000 -        0x1a1476fff  libSMC.dylib (20) <10AD3F44-AD41-3294-A9B0-3AF86ADF456C> /usr/lib/libSMC.dylib
       0x1a1477000 -        0x1a14d7fff  libcups.2.dylib (494.1) <C2CD4DBE-13B4-3D93-902B-D88C4B60A628> /usr/lib/libcups.2.dylib
       0x1a14d8000 -        0x1a14e7fff  com.apple.LangAnalysis (1.7.0 - 254) <10918D61-B681-339C-A380-89F3B66D7232> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
       0x1a14e8000 -        0x1a14f4fff  com.apple.NetAuth (6.2 - 6.2) <06B8BA21-FA96-377F-89ED-56B6FBB54193> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
       0x1a14f5000 -        0x1a14fcfff  com.apple.ColorSyncLegacy (4.13.0 - 1) <B7489608-9E2E-32D3-A745-DB1FFDF85600> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy
       0x1a14fd000 -        0x1a1508fff  com.apple.QD (4.0 - 416) <B1EE6F13-A80F-3DED-AE1B-DAEEB0FD7F2A> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
       0x1a1509000 -        0x1a1b0ffff  com.apple.audio.AudioResourceArbitration (1.0 - 1) <7D03969A-C2B0-30C9-AAAD-F530C2777D77> /System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration
       0x1a1b10000 -        0x1a1b1bfff  com.apple.perfdata (1.0 - 67.40.1) <E6DD9E16-3FDF-36F7-AB71-6193DFD7A2C2> /System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata
       0x1a1b1c000 -        0x1a1b2afff  libperfcheck.dylib (41) <FFAF5096-29A0-32D7-9503-330BE86BA903> /usr/lib/libperfcheck.dylib
       0x1a1b2b000 -        0x1a1b3bfff  com.apple.Kerberos (3.0 - 1) <228A8531-187C-3222-A570-2AC0F24A1ECE> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
       0x1a1b3c000 -        0x1a1b84fff  com.apple.GSS (4.0 - 2.0) <6A6552F1-C125-3404-8984-7B40C0579C14> /System/Library/Frameworks/GSS.framework/Versions/A/GSS
       0x1a1b85000 -        0x1a1b94fff  com.apple.CommonAuth (4.0 - 2.0) <40640305-7C1A-3E9F-B304-38376416EEA4> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
       0x1a1be9000 -        0x1a1c0afff  com.apple.security.KeychainCircle.KeychainCircle (1.0 - 1) <4AA42633-FA6B-3029-9373-3C791C2AA7BC> /System/Library/PrivateFrameworks/KeychainCircle.framework/Versions/A/KeychainCircle
       0x1a1c0b000 -        0x1a1c13fff  com.apple.CorePhoneNumbers (1.0 - 1) <1D5F5EF2-789C-36F5-A115-BB140EEBBF59> /System/Library/PrivateFrameworks/CorePhoneNumbers.framework/Versions/A/CorePhoneNumbers
       0x1a1d61000 -        0x1a1d61fff  liblaunch.dylib (2038.40.38) <A42FB952-AEBC-335F-8336-751E963F09F4> /usr/lib/system/liblaunch.dylib
       0x1a2536000 -        0x1a2673fff  com.apple.Sharing (1575 - 1575) <41777B8B-4817-3B84-9EDF-8BEE1E717456> /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing
       0x1a2674000 -        0x1a276bfff  com.apple.Bluetooth (8.0.2 - 8.0.2f9) <747DC141-C975-30BC-98E0-CB43EF17018C> /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
       0x1a276c000 -        0x1a277ffff  com.apple.AppContainer (4.0 - 509.60.2) <278D1395-238B-31CD-A636-30B1F7D0CFF1> /System/Library/PrivateFrameworks/AppContainer.framework/Versions/A/AppContainer
       0x1a2780000 -        0x1a2783fff  com.apple.SecCodeWrapper (4.0 - 509.60.2) <1062A2DA-BEA8-3C8F-A008-A30AF251489D> /System/Library/PrivateFrameworks/SecCodeWrapper.framework/Versions/A/SecCodeWrapper
       0x1a2784000 -        0x1a27dcfff  com.apple.ProtectedCloudStorage (1.0 - 1) <C2875C59-B7D4-360A-A2AF-4CE27686AE90> /System/Library/PrivateFrameworks/ProtectedCloudStorage.framework/Versions/A/ProtectedCloudStorage
       0x1a3f98000 -        0x1a3fa3fff  com.apple.DirectoryService.Framework (11.1 - 230.40.1) <0526A0E4-E8A5-3C90-8D3F-F6ED91B1581A> /System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryService
       0x1a3fa4000 -        0x1a3fcbfff  com.apple.RemoteViewServices (2.0 - 163) <351E4523-E99A-3849-88A1-96072B599D5C> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
       0x1a3fcc000 -        0x1a3fdbfff  com.apple.SpeechRecognitionCore (6.1.12 - 6.1.12) <D692FAF5-0245-3883-8DF3-7655E881BF00> /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
       0x1a3fdc000 -        0x1a3fe3fff  com.apple.speech.recognition.framework (6.0.3 - 6.0.3) <9DC7A28A-4E40-35EE-83DC-FCE5261B3630> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
       0x1a4224000 -        0x1a4224fff  libsystem_product_info_filter.dylib (8.40.1) <BF4F283D-1B0C-3A5A-8DAC-CFB3096CEDB4> /usr/lib/system/libsystem_product_info_filter.dylib
       0x1a42fd000 -        0x1a42fdfff  com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) <7C0FF713-FC2B-3857-B278-119FF3DC693F> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
       0x1a4324000 -        0x1a4324fff  com.apple.CoreServices (1122.11 - 1122.11) <797631B9-00AA-354E-8B87-E753665B6CCF> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
       0x1a45de000 -        0x1a45defff  com.apple.Accelerate (1.11 - Accelerate 1.11) <C114DE30-B4F9-36A6-B7FC-AF43156C4401> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
       0x1a4622000 -        0x1a462efff  com.apple.MediaAccessibility (1.0 - 130) <4B386CC2-EA1A-38DA-9335-30B39FF7A57D> /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility
       0x1a462f000 -        0x1a464efff  com.apple.networking.AlgosScoreFramework (1.0 - 1) <E6B7542F-8ACA-31B7-AE19-D2299D379BC1> /System/Library/PrivateFrameworks/AlgosScoreFramework.framework/Versions/A/AlgosScoreFramework
       0x1a464f000 -        0x1a4654fff  com.apple.AppleSRP (5.0 - 1) <DC2069EF-AF13-3D49-B48F-F9BB9D666712> /System/Library/PrivateFrameworks/AppleSRP.framework/Versions/A/AppleSRP
       0x1a4655000 -        0x1a465ffff  com.apple.frameworks.CoreDaemon (1.3 - 1.3) <127FB1D1-2EAA-3AD4-9E48-2F3F6F066A14> /System/Library/PrivateFrameworks/CoreDaemon.framework/Versions/B/CoreDaemon
       0x1a4660000 -        0x1a4694fff  com.apple.framework.SystemAdministration (1.0 - 1.0) <8279C918-F744-3C19-93D6-DE2DB7C1B1E5> /System/Library/PrivateFrameworks/SystemAdministration.framework/Versions/A/SystemAdministration
       0x1a4e72000 -        0x1a4ecdfff  com.apple.CoreBluetooth (1.0 - 1) <11FE4920-7267-36EB-8B17-151B8F41D654> /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
       0x1a4ece000 -        0x1a4ed8fff  com.apple.SymptomDiagnosticReporter (1.0 - 79.40.12) <9281E634-5ABF-3485-9869-1660C3F2B75D> /System/Library/PrivateFrameworks/SymptomDiagnosticReporter.framework/Versions/A/SymptomDiagnosticReporter
       0x1a4eee000 -        0x1a4ef9fff  com.apple.AppleIDAuthSupport (1.0 - 1) <55DA8399-E764-3464-AA63-FB7DBA1C041B> /System/Library/PrivateFrameworks/AppleIDAuthSupport.framework/Versions/A/AppleIDAuthSupport
       0x1a4efa000 -        0x1a4faefff  com.apple.DiscRecording (9.0.3 - 9030.4.5) <F64FFFE7-AB74-3C03-BAFB-BCBF4DBCDBCD> /System/Library/Frameworks/DiscRecording.framework/Versions/A/DiscRecording
       0x1a4faf000 -        0x1a4fe2fff  com.apple.MediaKit (16 - 927.40.2) <AFF2AF6E-FACA-34D1-BA21-F01E445DB697> /System/Library/PrivateFrameworks/MediaKit.framework/Versions/A/MediaKit
       0x1a4fe3000 -        0x1a50c3fff  com.apple.DiskManagement (14.0 - 1733.60.1) <E216DF7D-FACF-39C9-B316-9AF2F8F08E04> /System/Library/PrivateFrameworks/DiskManagement.framework/Versions/A/DiskManagement
       0x1a50c4000 -        0x1a50cffff  com.apple.CoreAUC (322.2.0 - 322.2.0) <A0D85DA0-E7F2-3329-98F3-27045BD949F3> /System/Library/PrivateFrameworks/CoreAUC.framework/Versions/A/CoreAUC
       0x1a50d0000 -        0x1a50d3fff  com.apple.Mangrove (1.0 - 25) <DE8C5916-FF51-3A7A-8173-D297EE52D90A> /System/Library/PrivateFrameworks/Mangrove.framework/Versions/A/Mangrove
       0x1a50d4000 -        0x1a5103fff  com.apple.CoreAVCHD (6.1.0 - 6100.4.1) <B8853BE6-FCCC-3AAF-BD0B-97D3EBC75FE3> /System/Library/PrivateFrameworks/CoreAVCHD.framework/Versions/A/CoreAVCHD
       0x1a5104000 -        0x1a522cfff  com.apple.FileProvider (326 - 326) <41CFE519-0190-3E90-97B3-692046037AE1> /System/Library/Frameworks/FileProvider.framework/Versions/A/FileProvider
       0x1a522d000 -        0x1a5250fff  com.apple.GenerationalStorage (2.0 - 322) <7C39E85F-C302-380F-9E7D-EFF873607707> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
       0x1a5bed000 -        0x1a5c27fff  com.apple.DebugSymbols (195.1 - 195.1) <525D1AB3-CF31-3314-9A19-599D5078FAEF> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
       0x1a5c28000 -        0x1a5cdffff  com.apple.CoreSymbolication (12.2 - 64541.4) <DDEA1AAD-5FC1-3C0C-BD5A-ABE12F310473> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
       0x1a6b66000 -        0x1a6bc5fff  com.apple.framework.Apple80211 (17.0 - 1728) <BE2820B6-286D-3EB7-B219-C0E267335AA3> /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211
       0x1a6bc6000 -        0x1a6cfefff  com.apple.CoreWiFi (3.0 - 341) <138EC2D6-6250-3E1C-AC0E-B78B4E5D9802> /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi
       0x1a6d1a000 -        0x1a6d55fff  com.apple.LDAPFramework (2.4.28 - 194.5) <D0E4EBE6-0D3B-3191-A551-4256E4605E37> /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP
       0x1a6d56000 -        0x1a6d57fff  com.apple.TrustEvaluationAgent (2.0 - 35) <E06F76FD-614B-3955-A697-83A48AD7A00F> /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
       0x1a6d58000 -        0x1a6e51fff  libcrypto.44.dylib (56.60.2) <29E7B90E-F541-3B3E-A484-61CDE1ED5B65> /usr/lib/libcrypto.44.dylib
       0x1a6e52000 -        0x1a6e7dfff  libssl.46.dylib (56.60.2) <E8EFE303-6EA1-3F8C-8581-CD024486B387> /usr/lib/libssl.46.dylib
       0x1a6e7e000 -        0x1a6f31fff  com.apple.DiskImagesFramework (595.40.1 - 595.40.1) <521C9845-BBDC-3B3B-9A2E-C2D13B7F41E6> /System/Library/PrivateFrameworks/DiskImages.framework/Versions/A/DiskImages
       0x1a6f68000 -        0x1a6f77fff  com.apple.xpc.RemoteServiceDiscovery (1.0 - 2038.40.38) <10757691-CC02-38D3-B5D8-A264D9648519> /System/Library/PrivateFrameworks/RemoteServiceDiscovery.framework/Versions/A/RemoteServiceDiscovery
       0x1a6f78000 -        0x1a6f8ffff  com.apple.xpc.RemoteXPC (1.0 - 2038.40.38) <D62A0803-B9E0-38E6-8D95-E4DEC0E27AEE> /System/Library/PrivateFrameworks/RemoteXPC.framework/Versions/A/RemoteXPC
       0x1a6fd3000 -        0x1a6fd6fff  com.apple.help (1.3.8 - 71) <571D77F4-7411-36A8-8C3D-DBF00A4A4ACE> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
       0x1a6fd7000 -        0x1a6fdefff  com.apple.EFILogin (2.0 - 2) <C454840B-BCC2-300B-99B3-10FCAE76E131> /System/Library/PrivateFrameworks/EFILogin.framework/Versions/A/EFILogin
       0x1a6fdf000 -        0x1a6feafff  libcsfde.dylib (554) <A4B3791B-54BC-3BF9-83CA-B5D7D3FC8BD7> /usr/lib/libcsfde.dylib
       0x1a6feb000 -        0x1a704afff  libcurl.4.dylib (121.40.2) <B9C7E3F0-9F3F-3992-BC36-23E3120D7824> /usr/lib/libcurl.4.dylib
       0x1a704b000 -        0x1a7052fff  com.apple.LoginUICore (4.0 - 4.0) <3AE223DC-ACE7-3E72-8865-A4107EAAF0BA> /System/Library/PrivateFrameworks/LoginUIKit.framework/Versions/A/Frameworks/LoginUICore.framework/Versions/A/LoginUICore
       0x1a7210000 -        0x1a7210fff  com.apple.ApplicationServices (48 - 50) <5FAA3FF0-EC9B-3A66-A99D-70FFAC23EA29> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
       0x1a74f6000 -        0x1a74f6fff  libHeimdalProxy.dylib (79) <42592F61-568E-322B-B5DF-9C69A33E9000> /System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib
       0x1a75a1000 -        0x1a75a1fff  com.apple.audio.units.AudioUnit (1.14 - 1.14) <E2E442D0-D865-3703-9B74-3C2BE1190D42> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
       0x1a7f28000 -        0x1a7f2efff  com.apple.ASEProcessing (1.26.0 - 1.26.0) <D50AB8C9-1C75-3072-A18E-161237441092> /System/Library/PrivateFrameworks/ASEProcessing.framework/Versions/A/ASEProcessing
       0x1a93eb000 -        0x1a93eefff  com.apple.IOSurfaceAccelerator (1.0.0 - 1.0.0) <C57E5066-EC50-3E8D-8883-E9D0DB9D5A85> /System/Library/PrivateFrameworks/IOSurfaceAccelerator.framework/Versions/A/IOSurfaceAccelerator
       0x1aa472000 -        0x1aa48dfff  com.apple.openscripting (1.7 - 190) <89C64D77-FF84-320E-BE5F-78F279C36C73> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
       0x1aa48e000 -        0x1aa491fff  com.apple.securityhi (9.0 - 55008) <E71813F6-18F3-35AB-A6C8-12AFACCBDE0A> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
       0x1aa492000 -        0x1aa495fff  com.apple.ink.framework (10.15 - 227) <CB34A459-A64B-37EA-8695-113E64A52382> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
       0x1aa496000 -        0x1aa499fff  com.apple.CommonPanels (1.2.6 - 101) <41AE151F-CBC4-3838-9DDC-B364997377F8> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
       0x1aa49a000 -        0x1aa4a1fff  com.apple.ImageCapture (1708 - 1708) <636A654E-0A0B-33CD-9A63-555A5DF631DF> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
       0x1ac665000 -        0x1ac686fff  com.apple.IOGPU (20.21.1 - 20.21.1) <A87744EB-C1F5-31ED-BE39-B71692DC97FA> /System/Library/PrivateFrameworks/IOGPU.framework/Versions/A/IOGPU
       0x1ad302000 -        0x1ad305fff  com.apple.OSAServicesClient (1.0 - 1) <512E9139-6E20-3E01-AA0C-5AC2D2AF3656> /System/Library/PrivateFrameworks/OSAServicesClient.framework/Versions/A/OSAServicesClient
       0x1b0f34000 -        0x1b0f37fff  com.apple.print.framework.Print (15 - 271) <C137A101-A4E4-35E2-B9D5-5807C879F854> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
       0x1b0f38000 -        0x1b0f3bfff  com.apple.Carbon (160 - 164) <9455FEDB-56A3-38DD-8473-41826E74C4CC> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
       0x1b11c9000 -        0x1b11e5fff  com.apple.private.SystemPolicy (1.0 - 1) <A74ADA5D-C1DA-376E-B5A2-F3AAE208DD0C> /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy
       0x1b1b36000 -        0x1b1b41fff  com.apple.MallocStackLogging (1.0 - 1) <CE8B1F36-F650-397C-AC25-E9C22C4B8747> /System/Library/PrivateFrameworks/MallocStackLogging.framework/Versions/A/MallocStackLogging
       0x1b1b57000 -        0x1b1b69fff  libmis.dylib (274.60.2) <75205B54-301C-32A2-9F78-5CA68144EDD4> /usr/lib/libmis.dylib
       0x1b54d9000 -        0x1b54f1fff  libCGInterfaces.dylib (544) <E7E7FB73-B3FD-3A36-9436-8D1B1C9BC3EE> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/Libraries/libCGInterfaces.dylib
       0x1bbb48000 -        0x1bbb91fff  com.apple.osanalytics.OSAnalytics (1.0 - 1) <E444D45A-16C6-3D81-9F9E-F1480954B314> /System/Library/PrivateFrameworks/OSAnalytics.framework/Versions/A/OSAnalytics
       0x1c577b000 -        0x1c580dfff  com.apple.Symbolication (12.2 - 64541.7.1) <4D8C25CC-A99D-3278-AF7C-82234882DF72> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
       0x1d5769000 -        0x1d576dfff  libmetal_timestamp.dylib (31001.160) <138EA401-9B10-3CCD-8C52-8AAEC870F9DD> /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/31001/Libraries/libmetal_timestamp.dylib
       0x1d79c2000 -        0x1d79c8fff  libCoreFSCache.dylib (177.22) <4DD54172-58DD-3354-9237-24240736ED23> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
       0x1d79c9000 -        0x1d79cefff  libCoreVMClient.dylib (177.22) <A7D89B20-2B56-3AA7-BF8D-E4FFCBEB6B06> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
       0x1d79cf000 -        0x1d79defff  com.apple.opengl (18.1.1 - 18.1.1) <DE64D1BB-B8A8-33F3-ADBE-CEEAE6D95C27> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
       0x1d79df000 -        0x1d79e1fff  libCVMSPluginSupport.dylib (18.1.1) <8A8A2DC0-921E-3325-ACBA-365D1BC4680F> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
       0x1d79e2000 -        0x1d79eafff  libGFXShared.dylib (18.1.1) <87B86869-7D32-3408-B85C-5D3EE7572552> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
       0x1d79eb000 -        0x1d7a23fff  libGLImage.dylib (18.1.1) <8200AF5B-F339-3B05-971F-BAD8C3D7B6EC> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
       0x1d7a24000 -        0x1d7a5cfff  libGLU.dylib (18.1.1) <504D710E-7F8B-33CE-8F02-E7D35E0D2A39> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
       0x1d7a5d000 -        0x1d7bcbfff  libGLProgrammability.dylib (18.1.1) <90DCD57F-7ECC-3D10-863C-38B018F11FF1> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib
       0x1d7bcc000 -        0x1d7bd6fff  libGL.dylib (18.1.1) <146816E2-8322-3944-99A6-23C431D8E79E> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
       0x1d7bd7000 -        0x1d7d40fff  GLEngine (18.1.1) <8266EEAE-EB15-3232-A351-F67580640980> /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLEngine.bundle/GLEngine
       0x1d7d41000 -        0x1d7d66fff  GLRendererFloat (18.1.1) <9B7210CE-9192-3BE4-892C-98A31059DEE1> /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLRendererFloat.bundle/GLRendererFloat
       0x1d7d67000 -        0x1d7dc6fff  com.apple.opencl (4.5 - 4.5) <248E1DE7-6AAC-3130-A8BC-72745BB9583C> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
       0x1d886c000 -        0x1d8873fff  com.apple.agl (3.3.4 - AGL-3.3.3) <6C198CD3-F2EA-3022-8AA0-07A9C7028EF3> /System/Library/Frameworks/AGL.framework/Versions/A/AGL
       0x1e6132000 -        0x1e6139fff  libRosetta.dylib (203.13.2) <F36DDACF-B46B-3813-8ADE-A275209588BF> /usr/lib/libRosetta.dylib

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: 1016084
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=702.2M resident=0K(0%) swapped_out_or_unallocated=702.2M(100%)
Writable regions: Total=1.8G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.8G(100%)
 
                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Accelerate framework               384K        3 
Activity Tracing                   256K        1 
CG backing stores                 3264K        6 
CG image                           288K       10 
CoreAnimation                      208K       13 
CoreGraphics                        32K        2 
CoreUI image data                 1280K       11 
Foundation                          48K        2 
IOAccelerator                     24.7M      527 
IOKit                               16K        1 
Kernel Alloc Once                   32K        1 
MALLOC                           544.0M       86 
MALLOC guard page                  192K        9 
MALLOC_MEDIUM (reserved)         952.0M        8         reserved VM address space (unallocated)
MALLOC_NANO (reserved)           256.0M        1         reserved VM address space (unallocated)
OpenGL GLSL                        256K        3 
STACK GUARD                       56.2M       11 
Stack                             13.3M       11 
VM_ALLOCATE                       91.0M       69 
__AUTH                             634K      153 
__AUTH_CONST                      9425K      313 
__CTF                               759        1 
__DATA                            5786K      315 
__DATA_CONST                       9.8M      322 
__DATA_DIRTY                       599K      102 
__FONT_DATA                          4K        1 
__GLSLBUILTINS                    5176K        1 
__LINKEDIT                       484.6M       21 
__OBJC_CONST                      1211K      126 
__OBJC_RO                         64.5M        1 
__OBJC_RW                         2544K        1 
__TEXT                           217.6M      341 
__UNICODE                          588K        1 
mapped file                      581.0M       51 
shared memory                       64K        4 
===========                     =======  ======= 
TOTAL                              3.2G     2529 
TOTAL, minus reserved VM space     2.1G     2529 

Model: MacBookPro17,1, BootROM 6723.61.3, proc 8:4:4 processors, 16 GB, SMC 
Graphics: kHW_AppleM1Item, Apple M1, spdisplays_builtin
Memory Module: lp_ddr4
AirPort: spairport_wireless_card_type_airport_extreme, wl0: Oct 20 2020 12:49:54 version 18.20.222.14.7.8.100 FWID 01-ba327c2d
Bluetooth: Version 8.0.2f9, 3 services, 27 devices, 1 incoming serial ports
Network Service: Belkin USB-C LAN, Ethernet, en6
USB Device: USB 3.1 Bus
USB Device: Belkin USB-C LAN
USB Device: USB 3.1 Bus
Thunderbolt Bus: MacBook Pro, Apple Inc., 0.0
Thunderbolt Bus: MacBook Pro, Apple Inc., 0.0

@bjeurissen
Copy link
Member Author

bjeurissen commented Jan 5, 2021

So there are definitely issues with the opengl rendering in mrview. Even my 2013 MacBook air can load 100K tracks without a problem and scroll through them much more fluid than through the 10K tracks on the 2020 M1 Macbook. Not sure how to get to the bottom of this.

For reference, these are the outputs of the OpenGL info on a few macs:

Macbook Air 2013 (Intel, OS: Big Sur) --> can load 100K tracks and scroll through slabs smoothly:
intel_macbookair_2013

Imac 2014 (Intel, OS: Catalina) --> can load 100K tracks and scroll through slabs smoothly:
intel_imac_2014

Macbook Pro 2020 (M1, OS: Big Sur) --> crash on loading 100K tracks (see crashlog above) and scrolling through slabs with 10K tracks is not smooth:
m1_macbookpro_2020

What puzzles me is that the crashlog lists "libRosetta.dylib" which is the x86_64 to arm64 translation layer, whilst the mrview binary is native arm64 (it also shows up as arm64 in the process list).

@bjeurissen
Copy link
Member Author

Here is more in-depth view of the crash:

frame #11: 0x000000010259da54 mrview`MR::GUI::MRView::Tool::Tractography::draw(this=0x0000600000ed9420, transform=0x0000000139ee0a70, is_3D=false, (null)=2, (null)=33) at tractography.cpp:323:27
   320 	          for (int i = 0; i < tractogram_list_model->rowCount(); ++i) {
   321 	            Tractogram* tractogram = dynamic_cast<Tractogram*>(tractogram_list_model->items[i].get());
   322 	            if (tractogram->show && !hide_all_button->isChecked())
-> 323 	              tractogram->render (transform);
   324 	          }
   325 	          GL::assert_context_is_current();
   326 	        }
(lldb) frame variable
(MR::GUI::MRView::Tool::Tractography *) this = 0x0000600000ed9420
(const MR::GUI::Projection &) transform = 0x0000000139ee0a70: {
  MR::GUI::ModelViewProjection = {
    MV = {
      m = {
        [0] = -0.999996364
        [1] = 0.00000359256023
        [2] = 0.00269608176
        [3] = 0
        [4] = 0.000682523416
        [5] = 0.967762589
        [6] = 0.251863331
        [7] = 0
        [8] = -0.00260826224
        [9] = 0.251864254
        [10] = -0.967759072
        [11] = 0
        [12] = -2.08087516
        [13] = -11.6742182
        [14] = 2.78741503
        [15] = 1
      }
    }
    iMV = {
      m = {
        [0] = -0.999996423
        [1] = 0.000682523357
        [2] = -0.00260826224
        [3] = -0
        [4] = 0.00000359263504
        [5] = 0.967762589
        [6] = 0.251864254
        [7] = -0
        [8] = 0.002696082
        [9] = 0.251863331
        [10] = -0.967759072
        [11] = -0
        [12] = -2.088341
        [13] = 10.5972443
        [14] = 5.63243723
        [15] = 1
      }
    }
    P = {
      m = {
        [0] = 0.00893922522
        [1] = 0
        [2] = 0
        [3] = 0
        [4] = 0
        [5] = 0.0078043621
        [6] = 0
        [7] = 0
        [8] = 0
        [9] = 0
        [10] = -0.00273489603
        [11] = 0
        [12] = 0
        [13] = 0
        [14] = 0
        [15] = 1
      }
    }
    iP = {
      m = {
        [0] = 111.866516
        [1] = 0
        [2] = -0
        [3] = 0
        [4] = 0
        [5] = 128.133484
        [6] = 0
        [7] = -0
        [8] = -0
        [9] = 0
        [10] = -365.644623
        [11] = 0
        [12] = 0
        [13] = -0
        [14] = 0
        [15] = 1
      }
    }
    MVP = {
      m = {
        [0] = -0.00893919263
        [1] = 2.80376415E-8
        [2] = -0.00000737350319
        [3] = 0
        [4] = 0.00000610123061
        [5] = 0.0075527695
        [6] = -0.000688820029
        [7] = 0
        [8] = -0.0000233158444
        [9] = 0.00196563988
        [10] = 0.0026467205
        [11] = 0
        [12] = -0.018601412
        [13] = -0.0911098272
        [14] = -0.00762329018
        [15] = 1
      }
    }
    iMVP = {
      m = {
        [0] = -111.866119
        [1] = 0.0763515085
        [2] = -0.291777223
        [3] = 0
        [4] = 0.000460336858
        [5] = 124.002792
        [6] = 32.2722435
        [7] = 0
        [8] = -0.985807895
        [9] = -92.0924759
        [10] = 353.855896
        [11] = 0
        [12] = -2.088341
        [13] = 10.5972443
        [14] = 5.63243723
        [15] = 1
      }
    }
    viewport = ([0] = 0, [1] = 0, [2] = 447, [3] = 512)
  }
  glarea = 0x00006000039d0ff0
  font = 0x000000016d922c18
  crosshair = std::__1::shared_ptr<MR::GUI::Crosshair>::element_type @ 0x0000600002d0dec0 strong=1 weak=1 {
    __ptr_ = 0x0000600002d0dec0
  }
}
(bool) is_3D = false
(int)  = 2
(int)  = 33
(int) i = 0
(MR::GUI::MRView::Tool::Tractogram *) tractogram = 0x000000011b172900
(lldb) down
frame #10: 0x0000000102794c70 mrview`MR::GUI::MRView::Tool::Tractogram::render(this=0x000000011b172900, transform=0x0000000139ee0a70) at tractogram.cpp:492:13
   489 	            gl::Disable (gl::BLEND);
   490 	            gl::Enable (gl::DEPTH_TEST);
   491 	            gl::DepthMask (gl::TRUE_);
-> 492 	            render_streamlines();
   493 	          }
   494 	
   495 	          if (tractography_tool.line_opacity < 1.0) {
(lldb) frame variable
(MR::GUI::MRView::Tool::Tractogram *) this = 0x000000011b172900
(const MR::GUI::Projection &) transform = 0x0000000139ee0a70: {
  MR::GUI::ModelViewProjection = {
    MV = {
      m = {
        [0] = -0.999996364
        [1] = 0.00000359256023
        [2] = 0.00269608176
        [3] = 0
        [4] = 0.000682523416
        [5] = 0.967762589
        [6] = 0.251863331
        [7] = 0
        [8] = -0.00260826224
        [9] = 0.251864254
        [10] = -0.967759072
        [11] = 0
        [12] = -2.08087516
        [13] = -11.6742182
        [14] = 2.78741503
        [15] = 1
      }
    }
    iMV = {
      m = {
        [0] = -0.999996423
        [1] = 0.000682523357
        [2] = -0.00260826224
        [3] = -0
        [4] = 0.00000359263504
        [5] = 0.967762589
        [6] = 0.251864254
        [7] = -0
        [8] = 0.002696082
        [9] = 0.251863331
        [10] = -0.967759072
        [11] = -0
        [12] = -2.088341
        [13] = 10.5972443
        [14] = 5.63243723
        [15] = 1
      }
    }
    P = {
      m = {
        [0] = 0.00893922522
        [1] = 0
        [2] = 0
        [3] = 0
        [4] = 0
        [5] = 0.0078043621
        [6] = 0
        [7] = 0
        [8] = 0
        [9] = 0
        [10] = -0.00273489603
        [11] = 0
        [12] = 0
        [13] = 0
        [14] = 0
        [15] = 1
      }
    }
    iP = {
      m = {
        [0] = 111.866516
        [1] = 0
        [2] = -0
        [3] = 0
        [4] = 0
        [5] = 128.133484
        [6] = 0
        [7] = -0
        [8] = -0
        [9] = 0
        [10] = -365.644623
        [11] = 0
        [12] = 0
        [13] = -0
        [14] = 0
        [15] = 1
      }
    }
    MVP = {
      m = {
        [0] = -0.00893919263
        [1] = 2.80376415E-8
        [2] = -0.00000737350319
        [3] = 0
        [4] = 0.00000610123061
        [5] = 0.0075527695
        [6] = -0.000688820029
        [7] = 0
        [8] = -0.0000233158444
        [9] = 0.00196563988
        [10] = 0.0026467205
        [11] = 0
        [12] = -0.018601412
        [13] = -0.0911098272
        [14] = -0.00762329018
        [15] = 1
      }
    }
    iMVP = {
      m = {
        [0] = -111.866119
        [1] = 0.0763515085
        [2] = -0.291777223
        [3] = 0
        [4] = 0.000460336858
        [5] = 124.002792
        [6] = 32.2722435
        [7] = 0
        [8] = -0.985807895
        [9] = -92.0924759
        [10] = 353.855896
        [11] = 0
        [12] = -2.088341
        [13] = 10.5972443
        [14] = 5.63243723
        [15] = 1
      }
    }
    viewport = ([0] = 0, [1] = 0, [2] = 447, [3] = 512)
  }
  glarea = 0x00006000039d0ff0
  font = 0x000000016d922c18
  crosshair = std::__1::shared_ptr<MR::GUI::Crosshair>::element_type @ 0x0000600002d0dec0 strong=1 weak=1 {
    __ptr_ = 0x0000600002d0dec0
  }
}
(float) line_thickness_screenspace = 0.00000346750494
(float) point_size_screenspace = 1.58717406
(lldb) down
frame #9: 0x00000001027955ec mrview`MR::GUI::MRView::Tool::Tractogram::render_streamlines(this=0x000000011b172900) at tractogram.cpp:567:13
   564 	
   565 	            auto mode = geometry_type == TrackGeometryType::Points ? gl::POINTS : gl::LINE_STRIP;
   566 	
-> 567 	            gl::MultiDrawArrays (mode, &track_starts[buf][0], &track_sizes[buf][0], num_tracks_per_buffer[buf]);
   568 	
   569 	          }
   570 	
(lldb) frame variable
(MR::GUI::MRView::Tool::Tractogram *) this = 0x000000011b172900
(size_t) buf = 0
(size_t) N = 3
(gl::(anonymous enum)) mode = LINE_STRIP
(lldb) down
frame #8: 0x00000001cdc92154 GLEngine`glMultiDrawArrays_GL3Exec + 332
GLEngine`glMultiDrawArrays_GL3Exec:
->  0x1cdc92154 <+332>: cbnz   w0, 0x1cdc92460           ; <+1112>
    0x1cdc92158 <+336>: ldr    w8, [x25, #0xc3c]
    0x1cdc9215c <+340>: ldr    w9, [sp, #0x24]
    0x1cdc92160 <+344>: tst    w8, w9
(lldb) frame variable
(lldb) down
frame #7: 0x0000000114e1f50c AppleMetalOpenGLRenderer`gldRenderVertexArray(GLDContextRec*, unsigned int, unsigned int, int, int, unsigned int, void const*, int, void const*) + 14828
AppleMetalOpenGLRenderer`gldRenderVertexArray:
->  0x114e1f50c <+14828>: ldr    x0, [x25, #0xb00]
    0x114e1f510 <+14832>: ldr    x26, [sp, #0x108]
    0x114e1f514 <+14836>: ldr    x8, [x26, #0xb20]
    0x114e1f518 <+14840>: ldr    x2, [x8, #0x38]
(lldb) frame variable
(lldb) down
frame #6: 0x00000001152da8b8 AGXMetal13_3`___lldb_unnamed_symbol3453$$AGXMetal13_3 + 180
AGXMetal13_3`___lldb_unnamed_symbol3453$$AGXMetal13_3:
->  0x1152da8b8 <+180>: ldr    x8, [x19, x22]
    0x1152da8bc <+184>: ldr    w9, [x8, #0x3ac]
    0x1152da8c0 <+188>: str    w9, [x8, #0x3b4]
    0x1152da8c4 <+192>: ldp    x29, x30, [sp, #0xa0]
(lldb) frame variable
(lldb) down
frame #5: 0x00000001152dacc4 AGXMetal13_3`___lldb_unnamed_symbol3455$$AGXMetal13_3 + 616
AGXMetal13_3`___lldb_unnamed_symbol3455$$AGXMetal13_3:
->  0x1152dacc4 <+616>: mov    x0, x19
    0x1152dacc8 <+620>: mov    x1, x21
    0x1152daccc <+624>: ldp    x29, x30, [sp, #0x30]
    0x1152dacd0 <+628>: ldp    x20, x19, [sp, #0x20]
(lldb) frame variable
(lldb) down
frame #4: 0x00000001152db6d4 AGXMetal13_3`___lldb_unnamed_symbol3457$$AGXMetal13_3 + 1776
AGXMetal13_3`___lldb_unnamed_symbol3457$$AGXMetal13_3:
->  0x1152db6d4 <+1776>: ldr    w8, [x19, #0x498]
    0x1152db6d8 <+1780>: cmp    w8, #0x1                  ; =0x1 
    0x1152db6dc <+1784>: ldr    q0, [sp, #0x50]
    0x1152db6e0 <+1788>: b.ne   0x1152db5c0               ; <+1500>
(lldb) frame variable
(lldb) down
frame #3: 0x00000001a26852b8 IOGPU`ioGPUResourceListAddNewGroupAndResource + 228
IOGPU`ioGPUResourceListAddNewGroupAndResource:
->  0x1a26852b8 <+228>: bl     0x1a26852dc               ; _ioGPUResourceListAddNewGroupAndResourceFault
    0x1a26852bc <+232>: adrp   x0, 12
    0x1a26852c0 <+236>: add    x0, x0, #0x3ca            ; =0x3ca 
    0x1a26852c4 <+240>: adrp   x1, 12
(lldb) frame variable
(lldb) down
frame #2: 0x000000018b238864 libsystem_c.dylib`abort + 104
libsystem_c.dylib`abort:
->  0x18b238864 <+104>: mov    w0, #0x2710
    0x18b238868 <+108>: bl     0x18b1ee528               ; usleep$NOCANCEL
    0x18b23886c <+112>: bl     0x18b238870               ; __abort

libsystem_c.dylib`__abort:
    0x18b238870 <+0>:   pacibsp 
(lldb) frame variable
(lldb) down
frame #1: 0x000000018b2f0c24 libsystem_pthread.dylib`pthread_kill + 292
libsystem_pthread.dylib`pthread_kill:
->  0x18b2f0c24 <+292>: cmn    w0, #0x1                  ; =0x1 
    0x18b2f0c28 <+296>: b.ne   0x18b2f0c90               ; <+400>
    0x18b2f0c2c <+300>: ldr    x8, [x22, #0x8]
    0x18b2f0c30 <+304>: ldr    w0, [x8]
(lldb) frame variable
(lldb) down
frame #0: 0x000000018b2bfcec libsystem_kernel.dylib`__pthread_kill + 8
libsystem_kernel.dylib`__pthread_kill:
->  0x18b2bfcec <+8>:  b.lo   0x18b2bfd0c               ; <+40>
    0x18b2bfcf0 <+12>: pacibsp 
    0x18b2bfcf4 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x18b2bfcf8 <+20>: mov    x29, sp
(lldb) frame variable
(lldb) down
error: Already at the bottom of the stack.

@bjeurissen
Copy link
Member Author

bjeurissen commented Jan 5, 2021

All unit tests pass: testing_units.log

Some binary tests fail: testing_binaries.log, but it looks reasonable, @jdtournier @Lestropie ?

@Lestropie
Copy link
Member

Binary test failures are dwidenoise, tckgen -algorithm tensor_det and vectorstats. All necessitate an increase in testing tolerances in order to permit differences in outcomes of linear algebra between architectures.

jdtournier added a commit that referenced this issue Jan 6, 2021
This is just to check whether the complexity of the geometry shader, or
the actions we perform within it, are responsible for the poor
performance and mrview crashes when rendering tractograms as
streamtubes

See details in #2247
@jdtournier
Copy link
Member

@bjeurissen, take a look at the test_openGL_geometry_shader_on_M1_macbook branch (changes here). This basically strips out anything useful from the geometry shader and makes it as simple a pass-through as possible. A lot of stuff won't work any more (e.g. crop to slab), but at least it should answer the question as to whether the problem is the actions we take in the geometry shader, or the simple fact that we even use a geometry shader that is causing the problem...

@bjeurissen
Copy link
Member Author

bjeurissen commented Jan 6, 2021

@bjeurissen, take a look at the test_openGL_geometry_shader_on_M1_macbook branch (changes here).

Thanks! I just tried it, but this throws an uncaught exception (even with just a handful of tracks), so I guess the pass-through geometry shader introduced another problem:

frame #9: 0x0000000102c01d74 mrview`MR::GUI::GL::Shader::Program::link(this=0x00000001502d7a88) at shader.h:144:17
   141 	              gl::GetProgramiv (index_, gl::LINK_STATUS, &status);
   142 	              if (status == gl::FALSE_) {
   143 	                debug();
-> 144 	                throw Exception (std::string ("error linking OpenGL shader program ID " + str(index_)));
   145 	              }
   146 	            }
   147 	            void start () const {

EDIT: This is probably more helpful:

mrview: [ERROR] GLSL log [OpenGL shader program]: WARNING: Output of vertex shader 'v_end' not read by geometry shader
WARNING: Output of vertex shader 'v_include' not read by geometry shader
ERROR: Input of fragment shader 'g_include' not written by geometry shader

@jdtournier
Copy link
Member

OK, I see it's a bit more strict than my AMD drivers...

Try that last commit, see if that works (I'm ignoring the warnings for now).

@bjeurissen
Copy link
Member Author

Try that last commit, see if that works (I'm ignoring the warnings for now).

with the passthrough shader, the behavior stays the same as with pseudotubes: slow performance with 10K tracks, crash with 100K tracks

@mckeuken
Copy link

mckeuken commented Feb 15, 2021

Hi Guys, I was wondering whether there is any progress on this issue and whether I could help?

Currently on a M1 Mac and I was trying to visualise my streamlines (200k) but, as expected given the discussion above, mrview crashes with a somewhat nondescript error:
'/usr/local/bin/mrview: line 7: 9688 Abort trap: 6 "${f}"/MRView.app/Contents/MacOS/mrview "$@"'

The version that I'm using is:
== mrview 3.0.2 ==
64 bit release version, built Sep 30 2020, using Eigen 3.3.7

Note that I was able to view the 200k streamlines by adding 'MRViewDefaultTractGeomType: Lines' to the ~/.mrview.conf file. Inline with the suggestion here:
https://community.mrtrix.org/t/issues-with-psuedotube-rendering-on-apple-m1-macs/4505

@bjeurissen
Copy link
Member Author

bjeurissen commented Feb 25, 2021

Dear Max, thanks for reaching out! The problems on M1 Macs are believed to stem from the incomplete or buggy support of Geometry Shaders in the OpenGL implementation that is shipped with Apple M1 Macs. "Natively" the Apple M1 GPUs do not support Geometry Shaders at all, but given the OpenGL version that is bundled with macOS and given the fact that it still works with a limited amount of fibre tracks, it should be supported... However, there appear to be some caveats or bugs that we are unaware of.... (@neurolabusc: You seem to have quite some experience with 3D rendering using Apple M1 Macs. What is your take on this?)

Currently, the way to help would be to identify exactly where this problem occurs (e.g. identify what OpenGL error is reported or where in the shader the crash occurs), so we can either think of a work-around on our side or file a detailed bug report to Apple. I have tried using an OpenGL debugger from Apple to get to the bottom of this, but mrview grinds to a halt as soon as I start logging the OpenGL commands... There are quite some other tools available for OpenGL debugging, but I struggle to find solutions that are compatible with ARM64...

Another way you could help is by systematically testing all mrview features and check if anything else breaks down. So far we have:

@jdtournier
Copy link
Member

I have a feeling we might be able to change our implementation to avoid the use of the geometry shader - but it's going to take quite a bit of effort to work through the maths and make sure the solution is actually OpenGL-compliant... I'm not sure I'll have any time to look into this for some time unfortunately... 😒

@neurolabusc
Copy link

neurolabusc commented Feb 25, 2021

You may want to take a look at Surfice, which is distributed as a universal binary for macOS (natively supporting Intel and ARM64). It reads TCK format, so you can evaluate the performance.

In the Preferences window you will find a checkbox "Better (but slower) tracks"

  • When checked, the connectors are extruded as cylinders. This looks nice, but will overwhelm the GPU if you have a huge number of streamlines.
  • When unchecked, it will use imposter billboards, that are facing the camera. The method is described here. (email me using the email address in my avatar if you want a PDF).

When we developed this, we initially used the Geometry Shader, but this provided very poor performance with some vendors and some drivers. The role of the geometry shader was to generate new vertices dynamically. Our solution was to have the GPU buffer store two vertices instead of one for each line, these are identical in all respects except for the W component of their surface normal. We use this to extrude the two vertices so that they form a plane facing the viewer.

Looking at MRtrix, you also use OpenGL 3.3. Core, so you can use the shaders verbatim.

As both a caveat and suggestion, I note that MRtrix uses GL_FLOAT for virtually all the buffer data. You can use the GPU RAM much more efficiently by using the smallest acceptable data type (8-bit RGBA for colors, and for normals I have used GL_INT_2_10_10_10_REV - which gives 10-bits precision for the X,Y,Z components of the normal and the 2 bits for the W component is sufficient for this application). However, be aware that the Apple M1 will show a massive performance penalty for using the GL_INT_2_10_10_10_REV. This is not a native type in Metal. Perhaps someday the Apple engineers will get around to converting this to a native type when you load the buffer, but in the mean time I would suggest the having the normal be four 16-bit GL_HALF floats. The ARM has native scalar and SIMD instructions for converting 32-bit single floats to 16-bit half floats.

454401_1_En_11_Fig6_HTML gif

Vertex Shader

#version 330
#define M_PI 3.1415926535897932384626433832795
layout(location = 0) in vec3 Vert;
layout(location = 3) in vec4 Norm;
layout(location = 6) in vec4 Clr;
uniform mat4 ModelViewProjectionMatrix;
uniform mat4 ModelViewMatrix;
uniform mat4 ProjectionMatrix;
uniform float Radius;
uniform mat3 NormalMatrix;
uniform vec3 LightPos = vec3(0.0, 20.0, 30.0); //LR, -DU+, -FN+
out lowp vec4 vClr;
out vec4 vP;
out mediump vec3 vN;
out float TextCordCylinder;
out vec2 TextCordEnd;
out float fType;
out vec3 vLightPos;
out mat3 Rot;
out float RotInversion;
out vec3 SimN;
mat3 AlignVectors(vec3 FromVector,vec3 ToVector, inout float Inversion){
	vec3 v = cross(FromVector,ToVector);
	float E = M_PI/2.0;
	float s = length(v);
	float c = dot(FromVector,ToVector);
	float ang = acos(c);
	if((M_PI-ang)<E){
		Inversion=-1.0;
	}

	mat3 vX;
	vX[0] = vec3(0,v[2],-v[1]);
	vX[1] = vec3(-v[2],0,v[0]);
	vX[2] = vec3(v[1],-v[0],0);

	mat3 final = mat3(1.0)+vX+vX*vX*(1-c)/s*s*s*s;
	return final;
}
float angle(vec3 a,vec3 b){
	float c = dot(a,b);
	return acos(c);
}
void main() {
	float rScale = 0.001;
	float vType = Norm.a;
	vec3 VectorPoints = normalize(NormalMatrix*Norm.xyz);
	vec4 VertexPosition = ModelViewMatrix*vec4(Vert, 1.0);
	vec3 vecCameraPoint = vec3(0,0,1);
	vec4 VectorBillboard = normalize(vec4(cross(VectorPoints, vecCameraPoint),0.0));
	float kind = mod(gl_VertexID,2);
	float inversion = 1.0;
	if(vType==0.0){
		VectorBillboard = VectorBillboard*Radius*rScale;
		Rot=AlignVectors(vec3(0.0,-1.0,0.0),VectorPoints,inversion);
		if(kind==0.0){
			VertexPosition = VertexPosition-VectorBillboard;
			TextCordCylinder = 0.0;
			SimN=normalize(-VectorBillboard.xyz);
		}else{
			VertexPosition = VertexPosition+VectorBillboard;
			TextCordCylinder = 1.0;
			SimN=normalize(VectorBillboard.xyz);
		}
	}else if(vType==1.0){
		vec4 VectorEndBillboard = normalize(vec4(cross(VectorBillboard.xyz,VectorPoints.xyz),0.0))*Radius*rScale;
		Rot=AlignVectors(vec3(0.0,1.0,0.0),VectorBillboard.xyz,inversion);
		SimN=normalize(VectorPoints.xyz);
		VectorBillboard = VectorBillboard*Radius*rScale;
		if(kind==0.0){
			VertexPosition = VertexPosition-VectorBillboard+VectorEndBillboard;
			TextCordEnd = vec2(1.0,0.0);
		}else{
			VertexPosition = VertexPosition+VectorBillboard+VectorEndBillboard;
			TextCordEnd = vec2(1.0,1.0);
		}
	}else if(vType==-2.0){
		vec4 VectorEndBillboard = normalize(vec4(cross(VectorBillboard.xyz,VectorPoints.xyz),0.0))*Radius*rScale;

		Rot=AlignVectors(vec3(0.0,1.0,0.0),VectorBillboard.xyz,inversion);
		SimN=normalize(VectorPoints.xyz);

		VectorBillboard = VectorBillboard*Radius*rScale;
		if(kind==0.0){
			VertexPosition = VertexPosition-VectorBillboard-VectorEndBillboard;
			TextCordEnd = vec2(0.0,0.0);
		}else{
			VertexPosition = VertexPosition+VectorBillboard-VectorEndBillboard;
			TextCordEnd = vec2(0.0,1.0);
		}
	}else{
		vClr=vec4(0.0,0.0,0.0,1.0);
	}
	RotInversion = inversion;
	fType = vType;
	vClr = Clr;
	vP = ProjectionMatrix*VertexPosition;
	gl_Position = vP;
    vN = normalize((NormalMatrix * Norm.xyz));
	vLightPos=LightPos;
}

Fragment Shader

#version 330
in lowp vec4 vClr;
in mediump vec3 vN;
in vec4 vP;
in float TextCordCylinder;
in float fType;
in vec2 TextCordEnd;
in vec3 vLightPos;
in mat3 Rot;
in vec3 SimN;
in float RotInversion;
uniform sampler1D normalmaptexture;
uniform sampler2D normalmaptexturesphere;
uniform float Ambient = 0.2;
uniform float Diffuse = 0.8;
uniform float Specular = 0.5;
uniform float Shininess = 60.0;
uniform float Edge = 0.5;
uniform float SpecularRough = 0.05;
out vec4 color;
void main() {
	vec4 N;
	vec3 NN;
	if(fType==0.0){
		N = texture(normalmaptexture  , TextCordCylinder);
		NN =  Rot*(2.0*N.xyz-1.0);
	}else{
		N = texture(normalmaptexturesphere  , TextCordEnd);
		if(N.a==0.0)discard;
		NN =  Rot*(2.0*N.xyz-1.0);
	}
	vec3 SupX = Rot*vec3(0.0,0.0,N.z);
	vec3 SupY = RotInversion*Rot*vec3(0.0,0.0,N.z);
	NN.x = SupX.x+SimN.x;
	NN.y = max(0.0,SupY.y) + SimN.y;
	NN.z = NN.z;
	vec3 difClr = vClr.rgb;
	vec3 ambClr = vClr.rgb;
	vec3 L = normalize(vLightPos);
	vec3 n = NN;
	float NormalSpec = pow(max(0.0,dot(vN,L)),Shininess);
	float dif = max(0.0,dot(n,L)) * Diffuse;
	float s = pow(max(0.0,dot(n,L)), 10.0) * Specular;
	color = vec4(s + difClr*dif + Ambient*ambClr , 1.0);
}

@jdtournier
Copy link
Member

Thanks @neurolabusc, your billboarding approach sounds very similar to what we currently do with the geometry shader in mrview. I've tried very hard to avoid taking up any more RAM than the raw vertices so far, and I reckon I might have a way to keep doing that without a geometry shader - but I'd need to find time to work on it...

I might look into using 16-bit floats though, that might help a bit - though I have to admit I've never really found RAM to be a bottleneck - I've always been able to display 1M+ streamlines on my 2008 laptop, way too many for an acceptable frame rate... But it might come in handy if that does become a problem!

@neurolabusc
Copy link

neurolabusc commented Feb 25, 2021

@Lestropie for the linear algebra, be aware that the M1 includes undocumented but extremely high performance AMX2 instructions. Apple's Accelerate framework allows you to use these often with the same calling conventions of other linear algebra libraries, as demonstrated by the main_mmul.cpp. If you can use these, you will get superior performance. I agree that different implementations will provide different results, in particular as fused-multiply add (FMA) instructions have less rounding error than sequential multiply and add instructions. My web page also provides links describing why SciPy and NumPy do not use Apple's high performance libraries. If they do work for your applications, the performance is really outstanding.

@neurolabusc
Copy link

@jdtournier I agree that the ability of the geometry shader to emit vertices seems like the perfect solution. However, when I evaluated this (many years ago), I found these shaders often had a real performance hit. Each vertex in the code I describe is pretty compact:

For most computers:
x3 32-bit floats position: vec3 Vert;
x1 32-bit 10_10_10_2 normal+type: vec4 Norm;
x1 32-bit color: vec4 Clr;

For the M1:
x3 32-bit floats position: vec3 Vert;
x4 16-bit half normal+type: vec4 Norm;
x1 32-bit color: vec4 Clr;

@bjeurissen
Copy link
Member Author

Thanks @neurolabusc! I did a quick surfice vs mrview test on an M1 MacBook Pro (click the image to watch the movie):

IMAGE ALT TEXT.

I am using the same 10K tck file and surfice is clearly much more responsive. Moreover, with surfice I can load much larger tractograms on Apple M1, which would result in a crash when using MRview.

One additional thing I noticed (e.g. in the first frame) is that the colour encoding of the tracks between the two viewers seems off. This could just be a matter of different coordinate systems, but it might be that there is more to it.

@jdtournier
Copy link
Member

That's just 10k streamlines...? OK, there's definitely room for improvement... On my Win10 laptop with Intel HD graphics 620, I max out at 60 FPS - basically hitting the monitor refresh rate since we're running with VSync. Running full-screen and zooming in to really fill the screen, I max out at around 40 FPS. I'd expect the M1 to be more capable than that, right...?

@bjeurissen
Copy link
Member Author

That's just 10k streamlines...?

Yes

OK, there's definitely room for improvement... On my Win10 laptop with Intel HD graphics 620, I max out at 60 FPS - basically hitting the monitor refresh rate since we're running with VSync. Running full-screen and zooming in to really fill the screen, I max out at around 40 FPS. I'd expect the M1 to be more capable than that, right...?

The M1 should be able to destroy Intel HD graphics 620. It is supposed to be the current king of integrated graphics, so much that it can even rival older discrete GPUs. https://www.anandtech.com/show/16252/mac-mini-apple-m1-tested/3

@bjeurissen
Copy link
Member Author

bjeurissen commented Feb 26, 2021

That's just 10k streamlines...? OK, there's definitely room for improvement... On my Win10 laptop with Intel HD graphics 620, I max out at 60 FPS - basically hitting the monitor refresh rate since we're running with VSync. Running full-screen and zooming in to really fill the screen, I max out at around 40 FPS. I'd expect the M1 to be more capable than that, right...?

I ran mrview with the -fps option and got about 1 FPS with 10K pseudo tubes on Apple M1 MacBook Pro. Falling back to Line geometry FPS was 60.

@neurolabusc
Copy link

@bjeurissen can you send me some of your streamline files (e.g. send a dropbox/google drive link to the email in my avatar)? I wonder if a few minor tweaks can improve the performance. In particular, Metal performs best if you pad some datatype as shown in Table 2.3 of the Metal specification. For example, my shaders may perform best if the vec3 Vert is padded to take the space of a vec4. At some stage, I will update these for Metal. My MRIcroGL is already available supporting Metal natively on both Intel and ARM CPUs.

@neurolabusc
Copy link

neurolabusc commented Mar 27, 2021

@bjeurissen thanks for the sample dataset. I did spend some time investigating this. Specifically, I investigated whether adjusting the alignment of data types to match early specifications of Metal helped (e.g. the GLSL vec3 equivalent in Metal if float3, but as noted in section 2.2 float3 requires the same 16-byte alignment of a float4, rather than the more compact 12 bytes). This had no impact, so I assume that the M1 GPUs are a bit less rigid in their expectations.

I did make a few tiny performance gains for the M1. Since this is specific to the M1, I have not released new versions for other platforms. Therefore, when macOS users download the universal binary they will get v1.0.20201102++, with the ++ indicating improved M1 performance. You may want to try this out. For your huge tck files I strongly recommend that you uncheck the Better (but slower) tracks option in the preferences. The better mode uses cylinders, which require a lot more resources than the line imposters.

While Surfice is mesh based, I have also released a new version of my volume-based MRIcroGL. There are two versions of the universal binary for macOS: OpenGL and Metal. They have the same functionality but the latter is a tiny bit faster on modern computers like the M1

Finally, macOS users might want to try out my minimal MRIcro tool from the Apple AppStore. This has far fewer features than my other tools, and is constrained by Apple's sandboxing requirement. However, it might be a nice lightweight option for teaching classes. It is also a universal binary.

@bjeurissen
Copy link
Member Author

https://blog.dengine.net/2021/01/wonders-and-mysteries-of-the-m1/

Might contain some useful info.

@bjeurissen
Copy link
Member Author

bjeurissen commented Jul 1, 2021

I just upgraded to the latest Big Sur (11.4) release and it looks as if the OpenGL situation has changed:

  • dixel-view seems to work now, whereas before it crashed
  • I seem to be able to successfully display a larger amount of fibers as psuedotubes, when before it would crash. E.g. loading the same 20K that crashed before, now works. I can now display up to 40K tracks and if I move beyond that mrview no longer crashes, but just becomes unresponsive.
  • displaying fixels with crop to slice disabled does not work, but also no crash, just unresponsive, and I have never tried that on another computer so no idea what the state of that is in general
  • the ROI drawing bug is still present

@bjeurissen
Copy link
Member Author

bjeurissen commented Nov 17, 2022

On Apple M1, with macOS 12.6.1 (21G217) and OpenGL renderer 4.1 Metal - 76.3, the ROI drawing bug seems to gone (#2319). I am building from source (3.0.3-464-g84e11a42) with Qt 5.15.6.

So the only remaining issue (apart from poor performance in some scenarios) seems to be the unresponsiveness when displaying fixels with crop to slice disabled. How well does that work on other platforms?

@jdtournier
Copy link
Member

How well does that work on other platforms?

Just had a go: on my system (16 core AMD Ryzen 9 3950X, AMD Radeon RX590), I get frame rates >100 fps with a generic uncropped fixel plot. Seems the geometry shader is still causing issues...

@daljit46
Copy link
Member

daljit46 commented Jun 7, 2024

An interesting finding about this problem is that on my Macbook M2 running under Fedora Asahi (which has a working OpenGL implementation written from scratch by reverse engineering), the performance issues mentioned in this thread still persist. So the issue seems to be deeply in Apple's hardware/drivers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants