SpamSieve Hanging

Michael,

I recently upgraded to Tiger and set SpamSieve up again to work with the new Mail. Everything was working fine until I then upgraded to the latest SpamSieve. Now, it hangs on launch whether or not Mail is running and consumes all available CPU.

I sampled:
Sampling process 494 for 1 seconds with 1 millisecond of run time between samples
Sampling completed, processing symbols…
Analysis of sampling SpamSieve (pid 494) every 1 millisecond
Call graph:
241 Thread_2503
241 start
241 _start
241 NSApplicationMain
241 -[NSApplication run]
241 -[NSApplication finishLaunching]
241 -[NSNotificationCenter postNotificationName:object:userInfo:]
241 _CFXNotificationPostNotification
241 _nsnote_callback
241 -[MJTApplicationController(ApplicationDelegate) applicationWillFinishLaunching:]
241 -[SpamSieve(ApplicationDelegate) mjtApplicationWillFinishLaunching:]
241 -[Corpus initWithPath:]
241 -[CompactWordStore initWithFile:]
241 -[WordStore readFromData:]
233 -[CompactWordStore setInfo:forWord:touch:]
233 CFDictionarySetValue
186 __CFDictionaryFindBuckets2
117 CFEqual
92 CFEqual
25 __CFStringEqual
25 __CFStringEqual
36 __CFStringEqual
34 __CFStringEqual
1 bcmp
1 bcmp
1 dyld_stub_memcmp
1 dyld_stub_memcmp
25 __CFDictionaryFindBuckets2
8 __CF_INVOKE_CALLBACK
8 __CF_INVOKE_CALLBACK
46 CFEqual
46 CFEqual
1 CFStringCreateCopy
1 CFRetain
1 CFRetain
4 -[WordStore readFromData:]
1 -[NSConcreteData initWithBytes:length:copy:freeWhenDone:bytesAreVM:]
1 -[NSConcreteData initWithBytes:length:copy:freeWhenDone:bytesAreVM:]
1 CFStringCreateWithBytes
1 __CFStringCreateImmutableFunnel3
1 _CFRuntimeCreateInstance
1 _CFRuntimeCreateInstance
1 NSAllocateObject
1 _internal_class_createInstanceFromZone
1 _internal_class_createInstanceFromZone
1 objc_msgSend
1 objc_msgSend
241 Thread_2603
241 _pthread_start
241 CFURLCacheWorkerThread(void*)
241 CFRunLoopRunSpecific
241 mach_msg
241 mach_msg_trap
241 mach_msg_trap

Total number in stack (recursive counted multiple, when >=5):

Sort by top of stack, same collapsed (when >= 5):
mach_msg_trap 241
CFEqual 138
__CFStringEqual 59
__CFDictionaryFindBuckets2 25
__CF_INVOKE_CALLBACK 8
Sample analysis of process 494 written to file /dev/stdout

Got any suggestions?

Presumably you mean Leopard? I think if you wait a while it will eventually finish launching. Unfortunately, Leopard has different performance characteristics than previous versions of Mac OS X, with some operations taking approximately ten times longer than before. For some users, this can make SpamSieve slow to launch (many bounces in the Dock) and slow to respond thereafter. Most users will not notice a difference, however. You can make SpamSieve much faster by pruning your corpus. Choose Show Corpus from the Filter menu, sort by Last Used, and delete the words that haven’t been used within the last year. I am working with Apple to find a better solution to this problem.

Yeah, Leopard. Do’h!

I’ve heard that patience is a virtue, but having never practiced it, I guess I’ll give it a try.

Pruned Corpus, Performance Vastly Improved
I deleted everything from the corpus over a year old and it’s substantially faster.

SpamSieve 2.6.6 works around this performance bug in Leopard.

Michael Tsai Fan Club

You are so money.

M. O. N. E. Y.