Open randycoulman opened 5 years ago
I think the animations got broken by some change in the Cocoa runtime, which manifested itself when this project was rebuilt for x86_64. The drawing requests all take place on the main thread so I can see how the screen never gets a chance to repaint while the move is still being executed.
I have a patch that fixes this by performing the move in a background thread, so the main and UI threads can do their thing to paint the board. It's still a bit rough around the edges, and needs review to make sure all calls from the background thread back to the UI are done using performSelectorOnMainThread, and to make sure there are no race conditions. But it's looking good so far, I've played a bunch of games and nothing bad happened.
Wow, I didn't expect a fix for this! :)
Would it be possible to get this as an app? I'm not a dev and don't know how to use Xcode...
https://github.com/thomasokken/freecell/releases
Beta-quality software! Buyer beware, use at your own risk, etc. etc. etc.
This had been bugging me ever since Alisdair released the 64-bit build. It just took a loooong time before I finally decided to spend an evening to look into it!
Sorry for the late reply. I was not on Ventura yet so I had to upgrade for this to work. Which was worth it. My favorite fidget toy software now finally works like in the good old days. Thank you so much for taking the time to fix this! Know that your work is deeply appreciated. :)
My pleasure! It's a very nice app, I'm glad I can contribute a small piece to it. 😊 I didn't realize my build required Ventura, I guess Xcode just defaulted to it because it no longer supports whatever version Alisdair had targeted in his latest build. I just rebuilt it, and re-uploaded, with the target set to High Sierra (10.13), that should work fine as well, since nothing has happened to the code that would make it require later OS versions.
Thanks @thomasokken! Your build works perfectly on Catalina.
I just put out a new release, 2.3c, to fix the crash that would occasionally happen if you clicked on the board while the card animation was in progress. I'm not 100.00% sure yet that the issue is completely fixed, but I've tested it a lot the last few days, and it doesn't seem to happen any more. Please let me know if you still experience crashes with this version. https://github.com/thomasokken/freecell/releases
Hi
I think I just experienced this crash. I've not seen it before, though I'm not sure I've ever clicked the board during the animation (I'm not even certain I did it this time!).
Crashlog below.
Cheers Mark
Process: Freecell [464] Path: /Applications/Freecell.app/Contents/MacOS/Freecell Identifier: org.wasters.Freecell Version: 2.3 (57) Code Type: X86-64 (Native) Parent Process: launchd [1] User ID: 503
Date/Time: 2023-08-25 17:48:37.3500 +0100 OS Version: macOS 14.0 (23A5328b) Report Version: 12 Anonymous UUID: 724650CF-042C-A69A-D051-7AD51339BE36
Time Awake Since Boot: 23000 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000020 Exception Codes: 0x0000000000000001, 0x0000000000000020
Termination Reason: Namespace SIGNAL, Code 11 Segmentation fault: 11 Terminating Process: exc handler [464]
VM Region Info: 0x20 is not in any region. Bytes before following region: 140737487040480
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
shared memory 7fffffebf000-7fffffec0000 [ 4K] r-x/r-x SM=SHM
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libobjc.A.dylib 0x7ff816743b6f objc_release + 31 1 CoreFoundation 0x7ff816b8a93e RELEASE_OBJECTS_IN_THE_ARRAY + 127 2 CoreFoundation 0x7ff816b8a878 -[NSArrayM dealloc] + 130 3 Freecell 0x10c13f6e8 0x10c13b000 + 18152 4 Freecell 0x10c13f34a 0x10c13b000 + 17226 5 Freecell 0x10c141df3 0x10c13b000 + 28147 6 AppKit 0x7ff81a82ebfe -[NSAlert(NSAlertDeprecated) didEndSheet:returnCode:contextInfo:] + 78 7 AppKit 0x7ff81aded726 NSWindowEndWindowModalSession + 491 8 AppKit 0x7ff81a3d7a90 -[NSApplication(NSResponder) sendAction:to:from:] + 337 9 AppKit 0x7ff81a3d7903 -[NSControl sendAction:to:] + 86 10 AppKit 0x7ff81a3d7835 26-[NSCell _sendActionFrom:]_block_invoke + 131 11 AppKit 0x7ff81a3d773e -[NSCell _sendActionFrom:] + 171 12 AppKit 0x7ff81a3d7686 -[NSButtonCell _sendActionFrom:] + 96 13 AppKit 0x7ff81a3d45ae NSControlTrackMouse + 1823 14 AppKit 0x7ff81a3d3e6b -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 125 15 AppKit 0x7ff81a3d3d32 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 666 16 AppKit 0x7ff81a3d3128 -[NSControl mouseDown:] + 666 17 AppKit 0x7ff81a3d1add -[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:] + 4580 18 AppKit 0x7ff81a34aaca -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 404 19 AppKit 0x7ff81a34a71b -[NSWindow(NSEventRouting) sendEvent:] + 345 20 AppKit 0x7ff81aada456 -[NSApplication(NSEventRouting) sendEvent:] + 346 21 AppKit 0x7ff81a69c637 -[NSApplication _handleEvent:] + 65 22 AppKit 0x7ff81a1dc7cf -[NSApplication run] + 640 23 AppKit 0x7ff81a1b07e0 NSApplicationMain + 816 24 dyld 0x7ff8167833a6 start + 1942
Thread 1:: com.apple.NSEventThread 0 libsystem_kernel.dylib 0x7ff816acca2e mach_msg2_trap + 10 1 libsystem_kernel.dylib 0x7ff816adae4a mach_msg2_internal + 84 2 libsystem_kernel.dylib 0x7ff816ad3b6e mach_msg_overwrite + 653 3 libsystem_kernel.dylib 0x7ff816accd1f mach_msg + 19 4 CoreFoundation 0x7ff816be7475 CFRunLoopServiceMachPort + 143 5 CoreFoundation 0x7ff816be5ee5 CFRunLoopRun + 1371 6 CoreFoundation 0x7ff816be5372 CFRunLoopRunSpecific + 557 7 AppKit 0x7ff81a348500 _NSEventThread + 122 8 libsystem_pthread.dylib 0x7ff816b0c202 _pthread_start + 99 9 libsystem_pthread.dylib 0x7ff816b07bab thread_start + 15
Thread 2: 0 libsystem_pthread.dylib 0x7ff816b07b88 start_wqthread + 0
Thread 3: 0 libsystem_pthread.dylib 0x7ff816b07b88 start_wqthread + 0
Thread 4: 0 libsystem_pthread.dylib 0x7ff816b07b88 start_wqthread + 0
Thread 0 crashed with X86 Thread State (64-bit): rax: 0x0000000000000000 rbx: 0x00007fc9c1521e70 rcx: 0x00007ffffffffff8 rdx: 0x0000000000000000 rdi: 0x0000600001ed20e0 rsi: 0x0000000000000880 rbp: 0x00007ff7b3dc3c70 rsp: 0x00007ff7b3dc3c38 r8: 0x00000000000001ff r9: 0x0000000085233045 r10: 0x0000000000000066 r11: 0x0000000000000095 r12: 0x000000000000005e r13: 0x00007fc9c1521e70 r14: 0x0000000000000056 r15: 0x000000000000006e rip: 0x00007ff816743b6f rfl: 0x0000000000010246 cr2: 0x0000000000000020
Logical CPU: 0 Error Code: 0x00000004 (no mapping for user data read) Trap Number: 14
Thread 0 instruction stream: 48 01 ca 72 12 f0 48 0f-b1 17 74 25 a8 01 75 e4 H..r..H...t%..u. 31 f6 e9 2a 38 02 00 31-f6 e9 1b 74 00 00 48 b9 1..*8..1...t..H. f8 ff ff ff ff 7f 00 00-48 21 c8 f6 40 1e 01 74 ........@.*** df 48 89 f8 c3 90 90 90-90 90 90 90 90 90 90 90 .H.............. 90 48 85 ff 74 6f 89 f8-83 e0 01 75 68 48 b9 f8 .H..to.....uhH.. ff ff ff ff 7f 00 00 48-8b 07 48 89 c2 48 21 ca .......H..H..H!. [48]8b 72 20 40 f6 c6 04-74 4c a8 01 74 67 48 ba H.r @...tL..tgH. <== 00 00 00 00 00 00 80 00-48 be 00 00 00 00 00 00 ........H....... 00 01 48 39 d0 72 2e 49-89 c0 49 29 f0 72 17 f0 ..H9.r.I..I).r.. 4c 0f b1 07 74 1a a8 01-75 e8 31 f6 ba 01 00 00 L...t...u.1..... 00 e9 77 33 02 00 be 01-00 00 00 e9 69 99 00 00 ..w3........i... 49 39 d0 72 28 c3 66 83-7a 1e 00 79 0b 83 e6 02 I9.r(.f.z..y....
Binary Images:
0x10c63e000 - 0x10c64dfff libobjc-trampolines.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: 0 thread_create: 0 thread_set_state: 0
VM Region Summary: ReadOnly portion of Libraries: Total=499.4M resident=0K(0%) swapped_out_or_unallocated=499.4M(100%) Writable regions: Total=2.7G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=2.7G(100%)
VIRTUAL REGION
REGION TYPE SIZE COUNT (non-coalesced) =========== ======= ======= Accelerate framework 256K 2 Activity Tracing 256K 1 CG image 25.8M 112 ColorSync 256K 34 CoreAnimation 712K 61 CoreGraphics 12K 2 CoreUI image data 1652K 12 Foundation 16K 1 Image IO 1944K 1 Kernel Alloc Once 8K 1 MALLOC 2.7G 85 MALLOC guard page 48K 12 STACK GUARD 56.0M 5 Stack 10.0M 5 VM_ALLOCATE 48K 9 CTF 824 1 DATA 20.6M 383 DATA_CONST 18.9M 231 __DATA_DIRTY 814K 115 FONT_DATA 2352 1 LINKEDIT 179.6M 4 OBJC_RO 70.5M 1 __OBJC_RW 2151K 2 __TEXT 319.8M 405 dyld private memory 260K 2 mapped file 172.8M 33 shared memory 808K 19 =========== ======= ======= TOTAL 3.5G 1540
{"app_name":"Freecell","timestamp":"2023-08-25 17:48:38.00 +0100","app_version":"2.3","slice_uuid":"8cab9524-2f90-3e85-a0c4-52ade71ee953","build_version":"57","platform":1,"bundleID":"org.wasters.Freecell","share_with_app_devs":1,"is_first_party":0,"bug_type":"309","os_version":"macOS 14.0 (23A5328b)","roots_installed":0,"name":"Freecell","incident_id":"6AC07F37-EE33-4E51-825A-E5C93AFEF57A"} { "uptime" : 23000, "procRole" : "Foreground", "version" : 2, "userID" : 503, "deployVersion" : 210, "modelCode" : "iMac19,1", "coalitionID" : 443, "osVersion" : { "train" : "macOS 14.0", "build" : "23A5328b", "releaseType" : "User" }, "captureTime" : "2023-08-25 17:48:37.3500 +0100", "codeSigningMonitor" : 0, "incident" : "6AC07F37-EE33-4E51-825A-E5C93AFEF57A", "pid" : 464, "cpuType" : "X86-64", "roots_installed" : 0, "bug_type" : "309", "procLaunch" : "2023-08-25 11:18:41.7893 +0100", "procStartAbsTime" : 30353635491, "procExitAbsTime" : 23424869379886, "procName" : "Freecell", "procPath" : "\/Applications\/Freecell.app\/Contents\/MacOS\/Freecell", "bundleInfo" : {"CFBundleShortVersionString":"2.3","CFBundleVersion":"57","CFBundleIdentifier":"org.wasters.Freecell"}, "storeInfo" : {"deviceIdentifierForVendor":"DCE46BA3-4522-58F3-A660-6072C5B02894","thirdParty":true}, "parentProc" : "launchd", "parentPid" : 1, "coalitionName" : "org.wasters.Freecell", "crashReporterKey" : "724650CF-042C-A69A-D051-7AD51339BE36", "codeSigningID" : "org.wasters.Freecell", "codeSigningTeamID" : "F4D88K2P5W", "codeSigningFlags" : 570503953, "codeSigningValidationCategory" : 6, "codeSigningTrustLevel" : 4294967295, "sip" : "enabled", "vmRegionInfo" : "0x20 is not in any region. Bytes before following region: 140737487040480\n REGION TYPE START - END [ VSIZE] PRT\/MAX SHRMOD REGION DETAIL\n UNUSED SPACE AT START\n---> \n shared memory 7fffffebf000-7fffffec0000 [ 4K] r-x\/r-x SM=SHM ", "exception" : {"codes":"0x0000000000000001, 0x0000000000000020","rawCodes":[1,32],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_INVALID_ADDRESS at 0x0000000000000020"}, "termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":464}, "vmregioninfo" : "0x20 is not in any region. Bytes before following region: 140737487040480\n REGION TYPE START - END [ VSIZE] PRT\/MAX SHRMOD REGION DETAIL\n UNUSED SPACE AT START\n---> \n shared memory 7fffffebf000-7fffffec0000 [ 4K] r-x\/r-x SM=SHM ", "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0}, "faultingThread" : 0, "threads" : [{"triggered":true,"id":3122,"instructionState":{"instructionStream":{"bytes":[72,1,202,114,18,240,72,15,177,23,116,37,168,1,117,228,49,246,233,42,56,2,0,49,246,233,27,116,0,0,72,185,248,255,255,255,255,127,0,0,72,33,200,246,64,30,1,116,223,72,137,248,195,144,144,144,144,144,144,144,144,144,144,144,144,72,133,255,116,111,137,248,131,224,1,117,104,72,185,248,255,255,255,255,127,0,0,72,139,7,72,137,194,72,33,202,72,139,114,32,64,246,198,4,116,76,168,1,116,103,72,186,0,0,0,0,0,0,128,0,72,190,0,0,0,0,0,0,0,1,72,57,208,114,46,73,137,192,73,41,240,114,23,240,76,15,177,7,116,26,168,1,117,232,49,246,186,1,0,0,0,233,119,51,2,0,190,1,0,0,0,233,105,153,0,0,73,57,208,114,40,195,102,131,122,30,0,121,11,131,230,2],"offset":96}},"threadState":{"r13":{"value":140504508538480},"rax":{"value":0},"rflags":{"value":66118},"cpu":{"value":0},"r14":{"value":86},"rsi":{"value":2176},"r8":{"value":511},"cr2":{"value":32},"rdx":{"value":0},"r10":{"value":102},"r9":{"value":2233675845},"r15":{"value":110},"rbx":{"value":140504508538480},"trap":{"value":14,"description":"(no mapping for user data read)"},"err":{"value":4},"r11":{"value":149},"rip":{"value":140703505333103,"matchesCrashFrame":1},"rbp":{"value":140701851204720},"rsp":{"value":140701851204664},"r12":{"value":94},"rcx":{"value":140737488355320},"flavor":"x86_THREAD_STATE","rdi":{"value":105553148584160}},"queue":"com.apple.main-thread","frames":[{"imageOffset":35695,"symbol":"objc_release","symbolLocation":31,"imageIndex":2},{"imageOffset":129342,"symbol":"RELEASE_OBJECTS_IN_THE_ARRAY","symbolLocation":127,"imageIndex":3},{"imageOffset":129144,"symbol":"-[NSArrayM dealloc]","symbolLocation":130,"imageIndex":3},{"imageOffset":18152,"imageIndex":1},{"imageOffset":17226,"imageIndex":1},{"imageOffset":28147,"imageIndex":1},{"imageOffset":6827006,"symbol":"-[NSAlert(NSAlertDeprecated) didEndSheet:returnCode:contextInfo:]","symbolLocation":78,"imageIndex":4},{"imageOffset":12850982,"symbol":"NSWindowEndWindowModalSession","symbolLocation":491,"imageIndex":4},{"imageOffset":2275984,"symbol":"-[NSApplication(NSResponder) sendAction:to:from:]","symbolLocation":337,"imageIndex":4},{"imageOffset":2275587,"symbol":"-[NSControl sendAction:to:]","symbolLocation":86,"imageIndex":4},{"imageOffset":2275381,"symbol":"26-[NSCell _sendActionFrom:]_block_invoke","symbolLocation":131,"imageIndex":4},{"imageOffset":2275134,"symbol":"-[NSCell _sendActionFrom:]","symbolLocation":171,"imageIndex":4},{"imageOffset":2274950,"symbol":"-[NSButtonCell _sendActionFrom:]","symbolLocation":96,"imageIndex":4},{"imageOffset":2262446,"symbol":"NSControlTrackMouse","symbolLocation":1823,"imageIndex":4},{"imageOffset":2260587,"symbol":"-[NSCell trackMouse:inRect:ofView:untilMouseUp:]","symbolLocation":125,"imageIndex":4},{"imageOffset":2260274,"symbol":"-[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:]","symbolLocation":666,"imageIndex":4},{"imageOffset":2257192,"symbol":"-[NSControl mouseDown:]","symbolLocation":666,"imageIndex":4},{"imageOffset":2251485,"symbol":"-[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:]","symbolLocation":4580,"imageIndex":4},{"imageOffset":1698506,"symbol":"-[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:]","symbolLocation":404,"imageIndex":4},{"imageOffset":1697563,"symbol":"-[NSWindow(NSEventRouting) sendEvent:]","symbolLocation":345,"imageIndex":4},{"imageOffset":9626710,"symbol":"-[NSApplication(NSEventRouting) sendEvent:]","symbolLocation":346,"imageIndex":4},{"imageOffset":5178935,"symbol":"-[NSApplication _handleEvent:]","symbolLocation":65,"imageIndex":4},{"imageOffset":198607,"symbol":"-[NSApplication run]","symbolLocation":640,"imageIndex":4},{"imageOffset":18400,"symbol":"NSApplicationMain","symbolLocation":816,"imageIndex":4},{"imageOffset":25510,"symbol":"start","symbolLocation":1942,"imageIndex":5}]},{"id":5374,"name":"com.apple.NSEventThread","threadState":{"r13":{"value":21592279046},"rax":{"value":268451845},"rflags":{"value":518},"cpu":{"value":0},"r14":{"value":2},"rsi":{"value":21592279046},"r8":{"value":0},"cr2":{"value":4560887808},"rdx":{"value":8589934592},"r10":{"value":106682692665344},"r9":{"value":106682692665344},"r15":{"value":106682692665344},"rbx":{"value":123145463967840},"trap":{"value":133},"err":{"value":16777263},"r11":{"value":518},"rip":{"value":140703509039662},"rbp":{"value":123145463967680},"rsp":{"value":123145463967576},"r12":{"value":4294967295},"rcx":{"value":123145463967576},"flavor":"x86_THREAD_STATE","rdi":{"value":123145463967840}},"frames":[{"imageOffset":6702,"symbol":"mach_msg2_trap","symbolLocation":10,"imageIndex":7},{"imageOffset":65098,"symbol":"mach_msg2_internal","symbolLocation":84,"imageIndex":7},{"imageOffset":35694,"symbol":"mach_msg_overwrite","symbolLocation":653,"imageIndex":7},{"imageOffset":7455,"symbol":"mach_msg","symbolLocation":19,"imageIndex":7},{"imageOffset":509045,"symbol":"CFRunLoopServiceMachPort","symbolLocation":143,"imageIndex":3},{"imageOffset":503525,"symbol":"CFRunLoopRun","symbolLocation":1371,"imageIndex":3},{"imageOffset":500594,"symbol":"CFRunLoopRunSpecific","symbolLocation":557,"imageIndex":3},{"imageOffset":1688832,"symbol":"_NSEventThread","symbolLocation":122,"imageIndex":4},{"imageOffset":25090,"symbol":"_pthread_start","symbolLocation":99,"imageIndex":8},{"imageOffset":7083,"symbol":"thread_start","symbolLocation":15,"imageIndex":8}]},{"id":348992,"frames":[{"imageOffset":7048,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":8}],"threadState":{"r13":{"value":0},"rax":{"value":33554800},"rflags":{"value":512},"cpu":{"value":0},"r14":{"value":1},"rsi":{"value":82063},"r8":{"value":409604},"cr2":{"value":4560887808},"rdx":{"value":123145460228096},"r10":{"value":0},"r9":{"value":18446744073709551615},"r15":{"value":123145460751224},"rbx":{"value":123145460752384},"trap":{"value":133},"err":{"value":33554800},"r11":{"value":582},"rip":{"value":140703509281672},"rbp":{"value":0},"rsp":{"value":123145460752384},"r12":{"value":5193733},"rcx":{"value":0},"flavor":"x86_THREAD_STATE","rdi":{"value":123145460752384}}},{"id":349654,"frames":[{"imageOffset":7048,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":8}],"threadState":{"r13":{"value":0},"rax":{"value":33554800},"rflags":{"value":512},"cpu":{"value":0},"r14":{"value":1},"rsi":{"value":70527},"r8":{"value":409604},"cr2":{"value":4454793512},"rdx":{"value":123145460764672},"r10":{"value":0},"r9":{"value":18446744073709551615},"r15":{"value":123145461287800},"rbx":{"value":123145461288960},"trap":{"value":133},"err":{"value":33554800},"r11":{"value":582},"rip":{"value":140703509281672},"rbp":{"value":0},"rsp":{"value":123145461288960},"r12":{"value":5193733},"rcx":{"value":0},"flavor":"x86_THREAD_STATE","rdi":{"value":123145461288960}}},{"id":350988,"frames":[{"imageOffset":7048,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":8}],"threadState":{"r13":{"value":0},"rax":{"value":33554800},"rflags":{"value":512},"cpu":{"value":0},"r14":{"value":1},"rsi":{"value":72399},"r8":{"value":409604},"cr2":{"value":4713250816},"rdx":{"value":123145461301248},"r10":{"value":0},"r9":{"value":18446744073709551615},"r15":{"value":123145461824384},"rbx":{"value":123145461825536},"trap":{"value":133},"err":{"value":33554800},"r11":{"value":582},"rip":{"value":140703509281672},"rbp":{"value":0},"rsp":{"value":123145461825536},"r12":{"value":1982472},"rcx":{"value":0},"flavor":"x86_THREAD_STATE","rdi":{"value":123145461825536}}}], "usedImages" : [ { "source" : "P", "arch" : "x86_64h", "base" : 4502839296, "size" : 65536, "uuid" : "c43ce21c-a026-37b5-95ee-ef39fd2196de", "path" : "\/usr\/lib\/libobjc-trampolines.dylib", "name" : "libobjc-trampolines.dylib" }, { "source" : "P", "arch" : "x86_64", "base" : 4497584128, "CFBundleShortVersionString" : "2.3", "CFBundleIdentifier" : "org.wasters.Freecell", "size" : 49152, "uuid" : "8cab9524-2f90-3e85-a0c4-52ade71ee953", "path" : "\/Applications\/Freecell.app\/Contents\/MacOS\/Freecell", "name" : "Freecell", "CFBundleVersion" : "57" }, { "source" : "P", "arch" : "x86_64h", "base" : 140703505297408, "size" : 270273, "uuid" : "cb7ac98c-b998-3a03-a07d-6125de3391d1", "path" : "\/usr\/lib\/libobjc.A.dylib", "name" : "libobjc.A.dylib" }, { "source" : "P", "arch" : "x86_64h", "base" : 140703509688320, "CFBundleShortVersionString" : "6.9", "CFBundleIdentifier" : "com.apple.CoreFoundation", "size" : 4825085, "uuid" : "1f34ef0b-af9e-3290-9060-b901d328de5f", "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation", "name" : "CoreFoundation", "CFBundleVersion" : "2048.1.402" }, { "source" : "P", "arch" : "x86_64", "base" : 140703566577664, "CFBundleShortVersionString" : "6.9", "CFBundleIdentifier" : "com.apple.AppKit", "size" : 20979712, "uuid" : "6cce124e-8e3a-3720-9509-ff0885cdd5d1", "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit", "name" : "AppKit", "CFBundleVersion" : "2480" }, { "source" : "P", "arch" : "x86_64", "base" : 140703505567744, "size" : 639752, "uuid" : "fdda98e4-58fb-3e87-8769-8431695a4b5c", "path" : "\/usr\/lib\/dyld", "name" : "dyld" }, { "size" : 0, "source" : "A", "base" : 0, "uuid" : "00000000-0000-0000-0000-000000000000" }, { "source" : "P", "arch" : "x86_64", "base" : 140703509032960, "size" : 241656, "uuid" : "6e8afe0b-549f-3074-beca-1b2cfe7dc089", "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib", "name" : "libsystem_kernel.dylib" }, { "source" : "P", "arch" : "x86_64", "base" : 140703509274624, "size" : 49152, "uuid" : "1ea2dd13-f95e-3954-9642-bb7c989e0f14", "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib", "name" : "libsystem_pthread.dylib" } ], "sharedCache" : { "base" : 140703504871424, "size" : 21474836480, "uuid" : "262a0226-8018-3f20-968c-361d3091dbff" }, "vmSummary" : "ReadOnly portion of Libraries: Total=499.4M resident=0K(0%) swapped_out_or_unallocated=499.4M(100%)\nWritable regions: Total=2.7G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=2.7G(100%)\n\n VIRTUAL REGION \nREGION TYPE SIZE COUNT (non-coalesced) \n=========== ======= ======= \nAccelerate framework 256K 2 \nActivity Tracing 256K 1 \nCG image 25.8M 112 \nColorSync 256K 34 \nCoreAnimation 712K 61 \nCoreGraphics 12K 2 \nCoreUI image data 1652K 12 \nFoundation 16K 1 \nImage IO 1944K 1 \nKernel Alloc Once 8K 1 \nMALLOC 2.7G 85 \nMALLOC guard page 48K 12 \nSTACK GUARD 56.0M 5 \nStack 10.0M 5 \nVM_ALLOCATE 48K 9 \nCTF 824 1 \nDATA 20.6M 383 \nDATA_CONST 18.9M 231 \n__DATA_DIRTY 814K 115 \nFONT_DATA 2352 1 \nLINKEDIT 179.6M 4 \nOBJC_RO 70.5M 1 \n__OBJC_RW 2151K 2 \n__TEXT 319.8M 405 \ndyld private memory 260K 2 \nmapped file 172.8M 33 \nshared memory 808K 19 \n=========== ======= ======= \nTOTAL 3.5G 1540 \n", "legacyInfo" : { "threadTriggered" : { "queue" : "com.apple.main-thread" } }, "logWritingSignature" : "1b1c7e0b05fa2cb4ebe4377c1c2df18e42222b1d", "trialInfo" : { "rollouts" : [ { "rolloutId" : "5f72dc58705eff005a46b3a9", "factorPackIds" : {
},
"deploymentId" : 250000014
},
{
"rolloutId" : "6297d96be2c9387df974efa4",
"factorPackIds" : {
},
"deploymentId" : 250000011
}
], "experiments" : [ { "treatmentId" : "6dd670af-0633-45e4-ae5f-122ae4df02be", "experimentId" : "64406ba83deb637ac8a04419", "deploymentId" : 900000017 }, { "treatmentId" : "b24f3a71-087b-4e29-ba8d-dbc0ef744d12", "experimentId" : "64bd0307084d03725ee431f6", "deploymentId" : 500000001 } ] } }
Model: iMac19,1, BootROM 2019.0.0.0.0, 8 processors, 8-Core Intel Core i9, 3.6 GHz, 40 GB, SMC 2.46f12 Graphics: Radeon Pro 580X, Radeon Pro 580X, PCIe, 8 GB Display: iMac, Retina 5K (5120 x 2880), Main, MirrorOff, Online Memory Module: BANK 0/ChannelA-DIMM0, 4 GB, DDR4, 2667 MHz, SK Hynix, HMA851S6CJR6N-VK Memory Module: BANK 1/ChannelA-DIMM1, 16 GB, DDR4, 2667 MHz, 859B, CT16G4SFD8266.C16FD1 Memory Module: BANK 2/ChannelB-DIMM0, 4 GB, DDR4, 2667 MHz, SK Hynix, HMA851S6CJR6N-VK Memory Module: BANK 3/ChannelB-DIMM1, 16 GB, DDR4, 2667 MHz, 859B, CT16G4SFD8266.C16FD1 AirPort: spairport_wireless_card_type_wifi (0x14E4, 0x7BF), wl0: Jul 10 2023 12:30:19 version 9.30.503.0.32.5.92 FWID 01-88a8883 AirPort: Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports Network Service: Ethernet, Ethernet, en0 Network Service: Wi-Fi, AirPort, en1 USB Device: Ugreen Storage Device USB Device: USB31Bus USB Device: Ugreen Storage Device USB Device: Ugreen Storage Device USB Device: FaceTime HD Camera (Built-in) Thunderbolt Bus: iMac, Apple Inc., 47.5
On 9 Aug 2023, at 00:38, Thomas Okken @.***> wrote:
I just put out a new release, 2.3c, to fix the crash that would occasionally happen if you clicked on the board while the card animation was in progress. I'm not 100.00% sure yet that the issue is completely fixed, but I've tested it a lot the last few days, and it doesn't seem to happen any more. Please let me know if you still experience crashes with this version. https://github.com/thomasokken/freecell/releases
— Reply to this email directly, view it on GitHub https://github.com/alisdair/freecell/issues/3#issuecomment-1670450145, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMNY6PXCGBQNNDRSLTULJUTXULEV7ANCNFSM4JQLK7WQ. You are receiving this because you are subscribed to this thread.
It's hard to say for sure, but I would assume so. The crash is a result of the animation still taking place while a new game is being started, or other scenarios where the app is trying to do two things at the same time, where those two things aren't supposed to happen at the same time. I've never seen the app crash before I made the change to restore the animation in the 64-bit / ARM build, and the change in 2.3c addresses this issue.
The bug causes memory corruption, and that can cause the app to crash in various different places. I collected half a dozen crash logs, and no two are exactly the same. But based on the fact that I've never seen the app crash before my animation fix, it seems likely that any crash you observed was a result of that change, and I would expect 2.3c to prevent it from happening again. (I've had zero crashes since the 2.3c fix, and I saw crashes every few days or so before then.)
It's been over a year since I created my 2.3c version, and I've played thousands of Freecell games since then, and I haven't had a single crash. As far as I'm concerned, this issue is closed.
Maybe Alisdair will pick up my fix and merge it into his repo, but until then, my build continues to be available here: https://github.com/thomasokken/freecell/releases
I created a pull request with my changes: https://github.com/alisdair/freecell/pull/5
Thank you so much for building this game! I enjoy playing it a lot. Also, thank you for rebuilding it so that it continues to work on OS/X without warnings going forward.
With version 2.3 (57), it looks like the card animations are no longer working. This is especially noticeable when making the last move in a game when the "Automatically move cards to stacks" setting is turned on. Instead of seeing all of the cards animate up to the stacks, there is a pause and then the board is empty and the stacks are full. The pause seems to be about as long as it would have taken for the animation to happen.
Thanks again!