mortbopet / Ripes

A graphical processor simulator and assembly editor for the RISC-V ISA
https://ripes.me/
MIT License
2.52k stars 270 forks source link

Universal Apple Silicon build #276

Closed atw1020 closed 1 year ago

atw1020 commented 1 year ago

Makes a Universal MacOS build (both x86 and ARM) per #248

mortbopet commented 1 year ago

Awesome, thank you! Cool to see that the change is so minimal. Obviously i can't test this myself, so I'll trust you that you've verified that things seem to work as expected :) - will merge once CI is green.

atw1020 commented 1 year ago

Ok, so I've tested the artifact now, and there is a problem with the application packaging & info.plists. The executable itself works, but the packaged application crashes with the following report:

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process:               Ripes [16520]
Path:                  /Applications/Ripes-0.0.1-5-g6bc0a78-mac-universal2.app/Contents/MacOS/Ripes
Identifier:            
Version:               1.0 (1.0.0)
Code Type:             ARM-64 (Native)
Parent Process:        launchd [1]
User ID:               502

Date/Time:             2023-04-22 09:54:22.0378 -0700
OS Version:            macOS 13.3.1 (22E261)
Report Version:        12
Anonymous UUID:        A2B248F6-7773-5E6E-7D91-A0103D550944

Sleep/Wake UUID:       1B542233-F023-4A47-AB10-6F7AB5DAC940

Time Awake Since Boot: 36000 seconds
Time Since Wake:       6307 seconds

System Integrity Protection: enabled

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

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

Application Specific Information:
abort() called

Application Specific Backtrace 0:
0   CoreFoundation                      0x0000000189e9b19c __exceptionPreprocess + 176
1   libobjc.A.dylib                     0x00000001899ba4d4 objc_exception_throw + 60
2   Foundation                          0x000000018ae4db88 -[NSCalendarDate initWithCoder:] + 0
3   AppKit                              0x000000018d032d00 -[NSMenu itemAtIndex:] + 156
4   libqcocoa.dylib                     0x0000000104588a0c qt_plugin_instance + 100640
5   libqcocoa.dylib                     0x0000000104587924 qt_plugin_instance + 96312
6   QtCore                              0x00000001059922a0 _ZN11QMetaObject8activateEP7QObjectPKS_iPPv + 3780
7   QtGui                               0x0000000103cdf9f8 _ZN22QGuiApplicationPrivate21processActivatedEventEPN29QWindowSystemInterfacePrivate20ActivatedWindowEventE + 868
8   QtGui                               0x0000000103d386a4 _ZN22QWindowSystemInterface17handleThemeChangeINS_20AsynchronousDeliveryEEEvP7QWindow + 3664
9   libqcocoa.dylib                     0x00000001045b6f6c _ZN20QCocoaSystemTrayIcon13emitActivatedEv + 129632
10  AppKit                              0x000000018d131ae4 -[NSWindow _realMakeFirstResponder:] + 360
11  AppKit                              0x000000018d140e3c -[NSWindow _selectFirstKeyView] + 544
12  AppKit                              0x000000018d1404e0 -[NSWindow _setUpFirstResponder] + 148
13  AppKit                              0x000000018d13e104 -[NSWindow _doWindowWillBeVisibleAsSheet:] + 108
14  AppKit                              0x000000018d81ffec -[NSWindow _reallyDoOrderWindowAboveOrBelow:] + 1052
15  AppKit                              0x000000018d820a84 -[NSWindow _reallyDoOrderWindow:] + 64
16  AppKit                              0x000000018d820ce4 -[NSWindow _doOrderWindow:] + 264
17  AppKit                              0x000000018d13352c -[NSWindow makeKeyAndOrderFront:] + 40
18  libqcocoa.dylib                     0x00000001045a0418 _ZN20QCocoaSystemTrayIcon13emitActivatedEv + 36620
19  QtGui                               0x0000000103d27a1c _ZN14QWindowPrivate10setVisibleEb + 764
20  QtWidgets                           0x000000010487482c _ZN14QWidgetPrivate8show_sysEv + 904
21  QtWidgets                           0x0000000104875e14 _ZN14QWidgetPrivate11show_helperEv + 400
22  QtWidgets                           0x0000000104876a40 _ZN14QWidgetPrivate10setVisibleEb + 804
23  Ripes                               0x00000001023c7c04 _Z7guiModeR12QApplication + 60
24  Ripes                               0x00000001023c8298 main + 548
25  dyld                                0x00000001899ebf28 start + 2236

Kernel Triage:
VM - (arg = 0x0) pmap_enter retried due to resource shortage
VM - (arg = 0x0) pmap_enter retried due to resource shortage
VM - (arg = 0x0) pmap_enter retried due to resource shortage
VM - (arg = 0x0) pmap_enter retried due to resource shortage
VM - (arg = 0x0) pmap_enter retried due to resource shortage

Because the executable itself works, I assume the problem has something to do with info.plists, so I tried substituting the info.plists from version 2.2.6 but it didn't work. I was wondering if you could draw any insights from the stack trace that could help me narrow down the issue

mortbopet commented 1 year ago

That stacktrace doesn't ring a bell for me... have you researched other people's approach to universal binaries for Qt6?

atw1020 commented 1 year ago

QT6 has a whole page on macOS deployment that I've been reading. They suggest integrating the bundling into CMake itself. I'm going to try that now. I'm also trying to mess with the plutil commands in the deployment workflow.