macOS Catalina assertion failure: "_needsGeometryInWindowDidChangeNotificationCount…

We’ve got a desktop app built with Xojo 2019 r1.1, and some of our customers are reporting crashes on macOS Catalina.

I haven’t seen a crash log quite like this before. Does anyone have any idea what might be causing a _needsGeometryInWindowDidChangeNotificationCount assertion failure?

<https://xojo.com/issue/57788>

[code]Application Specific Information:
assertion failure: “_needsGeometryInWindowDidChangeNotificationCount < (1 << 8) - 1” → %lld

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff74571ade __abort_with_payload + 10
1 libsystem_kernel.dylib 0x00007fff745734ef abort_with_payload_wrapper_internal + 80
2 libsystem_kernel.dylib 0x00007fff74573521 abort_with_payload + 9
3 libsystem_c.dylib 0x00007fff744dfa07 _os_crash_fmt.cold.1 + 55
4 libsystem_c.dylib 0x00007fff74472866 _os_crash_fmt + 154
5 com.apple.AppKit 0x00007fff3a37812f -[NSView(NSInternal) enableGeometryInWindowDidChangeNotification] + 216
6 com.apple.AppKit 0x00007fff3a52a53f -[NSWindow(NSCursorRects) _addCursorRect:cursor:forView:] + 962
7 com.apple.AppKit 0x00007fff3a529d6a -[NSView addCursorRect:cursor:] + 607
8 com.xojo.XojoFramework 0x0000000106d45509 0x106c5b000 + 959753
9 com.xojo.XojoFramework 0x0000000106d3ef72 0x106c5b000 + 933746
10 com.apple.AppKit 0x00007fff3a42ea69 -[NSView(NSInternal) _updateTrackingAreasWithInvalidCursorRects:] + 677
11 com.apple.AppKit 0x00007fff3a42f058 -[NSView(NSInternal) _updateTrackingAreasWithInvalidCursorRects:] + 2196
12 com.apple.AppKit 0x00007fff3a42f058 -[NSView(NSInternal) _updateTrackingAreasWithInvalidCursorRects:] + 2196
13 com.apple.AppKit 0x00007fff3a432c67 -[NSScrollView _updateTrackingAreasWithInvalidCursorRects:] + 134
14 com.apple.AppKit 0x00007fff3a42f058 -[NSView(NSInternal) _updateTrackingAreasWithInvalidCursorRects:] + 2196
15 com.apple.AppKit 0x00007fff3a42f058 -[NSView(NSInternal) _updateTrackingAreasWithInvalidCursorRects:] + 2196
16 com.apple.AppKit 0x00007fff3a42f058 -[NSView(NSInternal) _updateTrackingAreasWithInvalidCursorRects:] + 2196
17 com.apple.AppKit 0x00007fff3a42f058 -[NSView(NSInternal) _updateTrackingAreasWithInvalidCursorRects:] + 2196
18 com.apple.AppKit 0x00007fff3a42f058 -[NSView(NSInternal) _updateTrackingAreasWithInvalidCursorRects:] + 2196
19 com.apple.AppKit 0x00007fff3a42e54b _NSWindowDisplayCycleUpdateStructuralRegions + 319
20 com.apple.AppKit 0x00007fff3a42c02f __NSWindowGetDisplayCycleObserverForUpdateStructuralRegions_block_invoke + 420
21 com.apple.AppKit 0x00007fff3a418f3a NSDisplayCycleObserverInvoke + 155
22 com.apple.AppKit 0x00007fff3a418b01 NSDisplayCycleFlush + 977
23 com.apple.QuartzCore 0x00007fff4890c3d6 CA::Transaction::run_commit_handlers(CATransactionPhase) + 100
24 com.apple.QuartzCore 0x00007fff4890bd28 CA::Transaction::commit() + 224
25 com.apple.AppKit 0x00007fff3abebe2a __62+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayLink]_block_invoke + 266
26 com.apple.AppKit 0x00007fff3abec252 ___NSRunLoopObserverCreateWithHandler_block_invoke + 41
27 com.apple.CoreFoundation 0x00007fff3d1674be CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 23
28 com.apple.CoreFoundation 0x00007fff3d1673e4 __CFRunLoopDoObservers + 457
29 com.apple.CoreFoundation 0x00007fff3d10a55b __CFRunLoopRun + 1219
30 com.apple.CoreFoundation 0x00007fff3d109e13 CFRunLoopRunSpecific + 499
31 com.apple.HIToolbox 0x00007fff3bc96b2d RunCurrentEventLoopInMode + 292
32 com.apple.HIToolbox 0x00007fff3bc9686d ReceiveNextEventCommon + 600
33 com.apple.HIToolbox 0x00007fff3bc965f7 _BlockUntilNextEventMatchingListInModeWithFilter + 64
34 com.apple.AppKit 0x00007fff3a32cac4 _DPSNextEvent + 990
35 com.apple.AppKit 0x00007fff3a32b834 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1352
36 com.xojo.XojoFramework 0x0000000106d302f5 0x106c5b000 + 873205
37 com.xojo.XojoFramework 0x0000000106d30339 0x106c5b000 + 873273
38 com.lightbluesoftware.lightblue 0x0000000101cafcc5 Application._CallFunctionWithExceptionHandling%%op + 181
39 com.xojo.XojoFramework 0x0000000106eb54bb CallFunctionWithExceptionHandling(void (*)()) + 262
40 com.xojo.XojoFramework 0x0000000106d302a2 0x106c5b000 + 873122
41 com.apple.AppKit 0x00007fff3a325fd4 -[NSApplication run] + 658
42 com.xojo.XojoFramework 0x0000000106eb382d RuntimeRun + 42
43 com.lightbluesoftware.lightblue 0x0000000101d9e1a3 REALbasic._RuntimeRun + 19
44 com.lightbluesoftware.lightblue 0x0000000105ae4a28 _Main + 536
45 com.lightbluesoftware.lightblue 0x0000000105ad50e3 main + 19
46 libdyld.dylib 0x00007fff74409405 start + 1[/code]

Try the new switch to edge feature by hovering the mouse over the green dot on the titlebar and see if that replicates it.

Good idea, but that doesn’t seem to be the culprit. I’m updating my Catalina partition to the release version to see if anything changed in the last week or so and will report back if that allows me to replicate the problem.

No joy replicating this with green dot in the release version of Catalina, either.

Possible framework issue https://github.com/AvaloniaUI/Avalonia/issues/3000

So, possibly something related to mouse cursor management? I’m interested to hear what the Xojo team think about this, or whether anyone else has encountered the same problem.

Please file a bug report and include the link from Julian and the crash log.

Thanks, Greg: done.

<https://xojo.com/issue/57788>