intvsteve / VINTage

Various Intellivision-related projects, including the LTO Flash! User Interface application.
GNU General Public License v2.0
3 stars 1 forks source link

LUI 1.0.0.4499 (64-bit) Hard crash in native code on launch #345

Closed intvsteve closed 3 years ago

intvsteve commented 3 years ago

Operating system version

macOS 10.11.6 (El Capitan)

Program version (from About box)

1.0.0.4499

Expected behavior

Program launches.

Actual behavior

App fails to launch.

Steps to reproduce

Try to launch.

Crash log if available (paste or attach)

Just a tiny portion of the crash dump:

Application Specific Information: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSWindow setAllowsAutomaticWindowTabbing:]: unrecognized selector sent to class 0x7fff75d37608' abort() called terminating with uncaught exception of type NSException

intvsteve commented 3 years ago

The problem is likely this code in MainWindow.Mac.cs:MainWindow.Initialize():

#if __UNIFIED__
            NSWindow.AllowsAutomaticWindowTabbing = false;
#endif // __UNIFIED__

In 32-bit code, this property is directly exposed. In the 64-bit builds, this is treated as a property that can be overridden. But, the underlying base class in the OS does not have this selector. Therefore, a run-time check (NSObject.ResponseTo()) is probably necessary to determine at run-time whether to make the call.