SpamSieve 3.2.1
SpamSieve 3.2.1 is a maintenance release of my Mac e-mail spam filter.
This fixes the previously mentioned problem with AppleScript timeouts and POP accounts on macOS Tahoe 26. I found a workaround, but it’s still a mystery exactly what was causing the problem. First, why was AppleScript delaying and then timing out rather than just reporting an error? I still think there’s a general Tahoe issue that causes this in a variety of apps. Second, what is the underlying error and why does it only affect some POP accounts? I was not able to find any pattern in the configurations that were getting the error vs. working normally.
Oddly, with macOS 15.7, I got a few reports of
errAETimeout
with the Mail extension talking to SpamSieve. This had never happened before, and, again, there did not seem to be evidence that the target app was actually delayed in responding to AppleScript. It seems unlikely, but it’s almost as if whatever’s going on with AppleScript in Tahoe got backported to Sequoia.NSStatusItem
in Tahoe is sending KVO notifications that it became visible even when it’s been set to be hidden (and seemingly is correctly hidden).I’ve been using
Thread.callStackSymbols
to stash some context information in my errors, but I had to reduce this practice because sometimes_NSCallStackArray
(the lazy class that calculates the symbols) is many times slower than normal and was blocking real work from getting done.I continue to receive occasional reports of Core Data crashes in
_thereIsNoSadnessLikeTheDeathOfOptimism
, where it seems like there’s no constraint conflict or optimistic locking failure, just a damaged database file. It’s unfortunate that Core Data can’t report this as a normal error when saving and instead takes down the whole app.
Previously:
- How to Export a Mac .icon File With the Proper Margins
- Tahoe AppleScript Timeouts
- macOS 15.7 and macOS 14.8
- SpamSieve 3.2
2 Comments RSS · Twitter · Mastodon
The issue with callStackSymbols is Swift, as it converts to strings at the ObjC->Swift berrier. Instead, take the addresses (the other Array API), and translate on demand. I have a better replacement, that demangles C++ and Swift symbols:
https://github.com/LeoNatan/LNObjectiveCHelpers/blob/master/LNAddressInfo.mm
There is also a private API to initialize the special NSArray subclass with the addresses when you really need them.
@Léo I’m aware of the eager bridging, but that has previously not been a problem for me, and it seems like it could be defeated by preventing/delaying the conversion to Array (e.g. casting to NSArray), without having to demangle them yourself. Thanks for you solution, though. I think the main issue is that in rare cases the demangling is super slow. I’m not sure what causes that, though.