6 Replies Latest reply: May 22, 2010 6:21 PM by Ancient Man
newton69 Level 1 (0 points)
Screen Saver and Energy Saver stop working if Speech Commands ("Speakable Items") is "On" even if using Listening "Key" vs. "Keyword".

iMac 9,1, Mac OS X (10.6.3), 2.93 GHz, Core 2 Duo, 4 GB, 640 GB, IM91.008D.B08, 1.37f3
  • musicwind95 Level 4 (1,280 points)
    I'm thinking that the Speech Commands process is constantly "active," and so the inactivity timer that triggers Screen Saver/Energy Saver never hits the time limit.
  • solongpc Level 1 (0 points)
    In Activity Monitor I can see 'Speakable Items Server' process (starts when you turn Speakable Items On in System Prefs) and 'Speakable Recognition Server' always busy taking 0.2% and 0.6% CPU. Taking a sample of the first process I could see an uninterrupted loop that handles 'spoken messages' even though I set it up to listen when a key is pressed.

    It seems like a bug. Can this be the desired behaviour? If yes, in the same note, the screen saver/energy saver should never run because the OS is always listening to keyboard input.
  • musicwind95 Level 4 (1,280 points)
    I don't think I'm seeing the loop that you refer to. Here's my sample:

    Sampling process 3472 for 3 seconds with 1 millisecond of run time between samples
    Sampling completed, processing symbols...
    Analysis of sampling SpeakableItems (pid 3472) every 1 millisecond
    Call graph:
    2717 Thread_95376 DispatchQueue_1: com.apple.main-thread (serial)
    2717 0x2041
    2717 0x20e1
    2717 -[NSApplication run]
    2717 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
    2717 _DPSNextEvent
    2717 BlockUntilNextEventMatchingListInMode
    2717 ReceiveNextEventCommon
    2717 RunCurrentEventLoopInMode
    2717 CFRunLoopRunInMode
    2717 CFRunLoopRunSpecific
    2717 __CFRunLoopRun
    2717 mach_msg
    2717 machmsgtrap
    2717 Thread_95377 DispatchQueue_2: com.apple.libdispatch-manager (serial)
    2717 start_wqthread
    2717 pthreadwqthread
    2717 dispatch_workerthread2
    2717 dispatch_queueinvoke
    2717 dispatch_mgrinvoke
    2717 kevent

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

    Sort by top of stack, same collapsed (when >= 5):
    kevent 2717
    machmsgtrap 2717
    Sample analysis of process 3472 written to file /dev/stdout

    Was the listening key on or off when you took the sample?
  • newton69 Level 1 (0 points)
    1. @solongpc: It can't (or at least shouldn't) be the "desired behavior"? If the CPU is supposed to be considered "busy" just because the "Speakable Recognition Server" is listening for the Speech Listening Key, then you could argue that the Screen / Energy Saver should never run even without Speech Commands because the OS is always "listening" for keyboard input to either: a) reset the Screen / Energy Saver Inactivity Timer or b) to input keys into the Active Window.

    2. @musicwind95: Regardless of whether you can reproduce / verify the loop, the Screen / Energy Saver has consistently stopped working for me when Speech Commands is On and consistently resumed working when I stop the "Speakable Recognition Server" process or never turn on Speech Commands to begin with after an OS restart.
  • solongpc Level 1 (0 points)
    1. @newton69: That's exactly what I was hinting in my first reply. It cannot be the desired behaviour or else why are we having this discussion in the first place?

    2. @musicwind95: You are right, I had tried too many combinations and have sampled the process for continuous listening, see below - this is the 3rd thread of the process by the way:

    2838 HP_IOThread::WorkLoop()
    2836 CAGuard::WaitUntil(unsigned long long)
    2836 CAGuard::WaitFor(unsigned long long)
    2836 pthread_condwait
    *2836 semaphoretimedwait_signaltrap*
    +*2 HP_IOThread::PerformIO(AudioTimeStamp const&, double)*+
    2 IOA_Device::CallIOProcs(AudioTimeStamp const&, AudioTimeStamp const&, AudioTimeStamp const&)
    2 HP_IOProc::Call(AudioTimeStamp const&, AudioTimeStamp const&, AudioBufferList const*, AudioTimeStamp const&, AudioBufferList*)
    2 AUGenericOutputEntry
    2 operator>>(ServerParamInputStream&, LMObj*&)
    1 AudioUnitRender
    1 AUHALEntry
    1 SystemOutputAUEntry
    1 0x11250b4ac
    1 0x11250c15f
    1 0x11250df53
    1 AUGenericOutputEntry
    1 operator>>(ServerParamInputStream&, LMObj*&)
    1 operator>>(ServerParamInputStream&, LMObj*&)
    1 operator>>(ServerParamInputStream&, LMObj*&)
    1 SpeechBusySystemWide
    1 SpeechBusy
    *1 SystemGlobalsGuts::Lock()*
    Sort by top of stack, same collapsed (when >= 5):
    kevent 2838
    *semaphoretimedwait_signaltrap 2836*
  • Ancient Man Level 1 (0 points)
    I have been having a similar problem with the screen saver and energy saver not working except if I run disk utilitie then it works for awhile. I use speech commands and I will turn it off to see what happens with the saver and sleep, but this problem never existed before snow leopard. Any advise is welcomed.