Menu

#16 Hang after init/speak/shutdown and repeating for 2nd time

open-accepted
5
2014-12-20
2003-06-06
Mike Klein
No

I am using freetts/(via jsapi) in a component-based IDE
for building web applications targeted towards
building/home automation/security.

In design mode, I allow actions to be invoked on
components. This requires a start/speak/stop cycle.
When I attempt this the second time the system
appears hung.

I have verified that allocate/deallocate are done in
start/stop methods. Yet I get the hang. Is there
something else I need to close/free?

Following is stack trace...I can send 3 method
(start/speak/stop) code snippet if desired.

voice is being started...
Allocating synthesizers...
Loading voices...
voice is started!

<note: voice is successfully spoken here>

voice is being stopped...
voice is stopped!

<note: speaking hangs on this run>

voice is being started...
Allocating synthesizers...
Loading voices...
voice is started!
Full thread dump Java HotSpot(TM) Client VM (1.4.1_01-
b01 mixed mode):

"Thread-5" daemon prio=7 tid=0x0D6F6B98 nid=0x98 in
Object.wait() [eadf000..eadfd8c]
at java.lang.Object.wait(Native Method)
- waiting on <02AE0700> (a
com.sun.speech.freetts.OutputQueue)
at java.lang.Object.wait(Object.java:426)
at com.sun.speech.freetts.OutputQueue.pend
(OutputQueue.java:97)
- locked <02AE0700> (a
com.sun.speech.freetts.OutputQueue)
at com.sun.speech.freetts.Voice$1.run
(Voice.java:396)

"Headspace mixer frame proc thread" daemon prio=10
tid=0x0ADE2EB8 nid=0xc14 in Object.wait()
[e97f000..e97fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <02C00000> (a
com.sun.media.sound.MixerThread)
at java.lang.Object.wait(Object.java:426)
at com.sun.media.sound.MixerThread.run
(MixerThread.java:326)
- locked <02C00000> (a
com.sun.media.sound.MixerThread)

"Java Sound event dispatcher" daemon prio=7
tid=0x0D5C60D0 nid=0x684 in Object.wait()
[e8af000..e8afd8c]
at java.lang.Object.wait(Native Method)
- waiting on <02C000F0> (a
com.sun.media.sound.EventDispatcher)
at java.lang.Object.wait(Object.java:426)
at
com.sun.media.sound.EventDispatcher.dispatchEvents
(EventDispatcher.java:294)
- locked <02C000F0> (a
com.sun.media.sound.EventDispatcher)
at com.sun.media.sound.EventDispatcher.run
(EventDispatcher.java:345)
at java.lang.Thread.run(Thread.java:536)

"Thread-3" daemon prio=7 tid=0x0D5C7FA8 nid=0x950 in
Object.wait() [e82f000..e82fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <030CBD80> (a
com.sun.speech.freetts.OutputQueue)
at java.lang.Object.wait(Object.java:426)
at com.sun.speech.freetts.OutputQueue.pend
(OutputQueue.java:97)
- locked <030CBD80> (a
com.sun.speech.freetts.OutputQueue)
at com.sun.speech.freetts.Voice$1.run
(Voice.java:396)

"TimerQueue" daemon prio=5 tid=0x0D561228 nid=0x65c
in Object.wait() [da2f000..da2fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <0300A220> (a
javax.swing.TimerQueue)
at javax.swing.TimerQueue.run
(TimerQueue.java:231)
- locked <0300A220> (a javax.swing.TimerQueue)
at java.lang.Thread.run(Thread.java:536)

"DestroyJavaVM" prio=5 tid=0x00234CB8 nid=0x610
waiting on condition [0..6fadc]

"AWT-EventQueue-0" prio=7 tid=0x0AD64D78 nid=0x740
in Object.wait() [d37f000..d37fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <030CF860> (a java.lang.Object)
at java.lang.Object.wait(Object.java:426)
at
com.sun.speech.engine.BaseEngine.waitEngineState
(BaseEngine.java:137)
- locked <030CF860> (a java.lang.Object)
at
com.vxappliance.services.speech.VoiceImpl.speak
(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0
(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke
(Method.java:324)
at
com.vxappliance.bbvg.BeanForm$1.actionPerformed
(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed
(AbstractButton.java:1764)
at
javax.swing.AbstractButton$ForwardActionEvents.actionP
erformed(AbstractButton.java:1817)
at
javax.swing.DefaultButtonModel.fireActionPerformed
(DefaultButtonModel.java:419)
at javax.swing.DefaultButtonModel.setPressed
(DefaultButtonModel.java:257)
at
javax.swing.plaf.basic.BasicButtonListener$ReleasedActio
n.actionPerformed(BasicButtonListener.java:30
at javax.swing.SwingUtilities.notifyAction
(SwingUtilities.java:1512)
at javax.swing.JComponent.processKeyBinding
(JComponent.java:2435)
at javax.swing.JComponent.processKeyBindings
(JComponent.java:2470)
at javax.swing.JComponent.processKeyEvent
(JComponent.java:2398)
at java.awt.Component.processEvent
(Component.java:4902)
at java.awt.Container.processEvent
(Container.java:1566)
at java.awt.Component.dispatchEventImpl
(Component.java:3598)
at java.awt.Container.dispatchEventImpl
(Container.java:1623)
at java.awt.Component.dispatchEvent
(Component.java:3439)
at
java.awt.KeyboardFocusManager.redispatchEvent
(KeyboardFocusManager.java:1688)
at
java.awt.DefaultKeyboardFocusManager.dispatchKeyEven
t(DefaultKeyboardFocusManager.java:593)
at
java.awt.DefaultKeyboardFocusManager.preDispatchKeyE
vent(DefaultKeyboardFocusManager.java:765)
at
java.awt.DefaultKeyboardFocusManager.typeAheadAssert
ions(DefaultKeyboardFocusManager.java:698)
at
java.awt.DefaultKeyboardFocusManager.dispatchEvent
(DefaultKeyboardFocusManager.java:559)
at java.awt.Component.dispatchEventImpl
(Component.java:3468)
at java.awt.Container.dispatchEventImpl
(Container.java:1623)
at java.awt.Window.dispatchEventImpl
(Window.java:1585)
at java.awt.Component.dispatchEvent
(Component.java:3439)
at java.awt.EventQueue.dispatchEvent
(EventQueue.java:450)
at
java.awt.EventDispatchThread.pumpOneEventForHierarch
y(EventDispatchThread.java:197)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy
(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents
(EventDispatchThread.java:144)
at java.awt.EventDispatchThread.pumpEvents
(EventDispatchThread.java:136)
at java.awt.EventDispatchThread.run
(EventDispatchThread.java:99)

"Java2D Disposer" daemon prio=10 tid=0x0AD59C30
nid=0xa6c in Object.wait() [d33f000..d33fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <02F9D780> (a
java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove
(ReferenceQueue.java:111)
- locked <02F9D780> (a
java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove
(ReferenceQueue.java:127)
at sun.java2d.Disposer.run(Disposer.java:97)
at java.lang.Thread.run(Thread.java:536)

"AWT-Windows" daemon prio=7 tid=0x0AD57E58
nid=0x6a8 runnable [cedf000..cedfd8c]
at sun.awt.windows.WToolkit.eventLoop(Native
Method)
at sun.awt.windows.WToolkit.run
(WToolkit.java:253)
at java.lang.Thread.run(Thread.java:536)

"AWT-Shutdown" prio=5 tid=0x0AD57AB8 nid=0x6e0 in
Object.wait() [ce9f000..ce9fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <02F50990> (a java.lang.Object)
at java.lang.Object.wait(Object.java:426)
at sun.awt.AWTAutoShutdown.run
(AWTAutoShutdown.java:259)
- locked <02F50990> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:536)

"Signal Dispatcher" daemon prio=10 tid=0x008F8818
nid=0x7cc waiting on condition [0..0]

"Finalizer" daemon prio=9 tid=0x008F7C40 nid=0xb00 in
Object.wait() [ab4f000..ab4fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <02F50A90> (a
java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove
(ReferenceQueue.java:111)
- locked <02F50A90> (a
java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove
(ReferenceQueue.java:127)
at java.lang.ref.Finalizer$FinalizerThread.run
(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x008F67B8
nid=0xa18 in Object.wait() [ab0f000..ab0fd8c]
at java.lang.Object.wait(Native Method)
- waiting on <02F50AF8> (a
java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:426)
at java.lang.ref.Reference$ReferenceHandler.run
(Reference.java:113)
- locked <02F50AF8> (a
java.lang.ref.Reference$Lock)

"VM Thread" prio=5 tid=0x008F5580 nid=0x7c4 runnable

"VM Periodic Task Thread" prio=10 tid=0x0023EB40
nid=0x330 waiting on condition
"Suspend Checker Thread" prio=10 tid=0x0023FDF0
nid=0x828 runnable

Discussion

  • Mike Klein

    Mike Klein - 2003-06-09
    • priority: 5 --> 9
     
  • Mike Klein

    Mike Klein - 2003-06-09

    Logged In: YES
    user_id=795049

    I definitely think there is a bug here.

    Code seems to be hanging in freetts.Voice$1.run() where it is
    waiting on an output queue. Thread gets started in here but
    never stopped.

    I have deallocated synthesizer after speaking voice, yet the
    freetts code doesn't shut down.

    I have an engineStart/speakVoice/engineStop metaphor going
    and stopping the engine ain't doing it.

    My start code:

    javax.speech.synthesis.Voice kevinHQ = new
    javax.speech.synthesis.Voice
    ("kevin16",
    javax.speech.synthesis.Voice.GENDER_DONT_CARE,
    javax.speech.synthesis.Voice.AGE_DONT_CARE, null);
    SynthesizerModeDesc unlimitedDesc = new
    SynthesizerModeDesc
    ("Unlimited domain FreeTTS Speech Synthesizer
    from Sun Labs", null, Locale.US, Boolean.FALSE, null);

    synthesizer = Central.createSynthesizer
    (unlimitedDesc);
    if(synthesizer == null)
    {
    System.err.println(noSynthesizerMessage
    ("unlimited domain synthesizer"));
    return false;
    }

    synthesizer.allocate();
    synthesizer.getSynthesizerProperties().setVoice
    (kevinHQ);
    synthesizer.resume();

    My speak code:

    synthesizer.speakPlainText(words, null);

    try
    {
    synthesizer.waitEngineState
    (Synthesizer.QUEUE_EMPTY);
    }
    catch(InterruptedException x)
    {
    logger.log(Level.SEVERE, "Got exception using voice",
    x);
    }

    My stop code:

    synthesizer.deallocate();

    None of my code is present in the stack dump I get. Just
    some freetts threads hanging around.

    Here is abbreviated/relevant portion of stack dump:

    "Headspace mixer frame proc thread" daemon prio=10
    tid=0x0D746E08 nid=0xa28 in Object.wait()
    [e79f000..e79fd8c]
    at java.lang.Object.wait(Native Method)
    - waiting on <02A53E88> (a
    com.sun.media.sound.MixerThread)
    at java.lang.Object.wait(Object.java:426)
    at com.sun.media.sound.MixerThread.run
    (MixerThread.java:326)
    - locked <02A53E88> (a
    com.sun.media.sound.MixerThread)

    "Java Sound event dispatcher" daemon prio=7
    tid=0x0AE25EE8 nid=0x708 in Object.wait()
    [e4cf000..e4cfd8c]
    at java.lang.Object.wait(Native Method)
    - waiting on <02A0D7C0> (a
    com.sun.media.sound.EventDispatcher)
    at java.lang.Object.wait(Object.java:426)
    at com.sun.media.sound.EventDispatcher.dispatchEvents
    (EventDispatcher.java:294)
    - locked <02A0D7C0> (a
    com.sun.media.sound.EventDispatcher)
    at com.sun.media.sound.EventDispatcher.run
    (EventDispatcher.java:345)
    at java.lang.Thread.run(Thread.java:536)

    "Thread-3" daemon prio=7 tid=0x0D5F86D8 nid=0xc48 in
    Object.wait() [e44f000..e44fd8c]
    at java.lang.Object.wait(Native Method)
    - waiting on <0316D350> (a
    com.sun.speech.freetts.OutputQueue)
    at java.lang.Object.wait(Object.java:426)
    at com.sun.speech.freetts.OutputQueue.pend
    (OutputQueue.java:97)
    - locked <0316D350> (a
    com.sun.speech.freetts.OutputQueue)
    at com.sun.speech.freetts.Voice$1.run(Voice.java:396)

     
  • Mike Klein

    Mike Klein - 2003-06-09

    Logged In: YES
    user_id=795049

    I definitely think there is a bug here.

    Code seems to be hanging in freetts.Voice$1.run() where it is
    waiting on an output queue. Thread gets started in here but
    never stopped.

    I have deallocated synthesizer after speaking voice, yet the
    freetts code doesn't shut down.

    I have an engineStart/speakVoice/engineStop metaphor going
    and stopping the engine ain't doing it.

    My start code:

    javax.speech.synthesis.Voice kevinHQ = new
    javax.speech.synthesis.Voice
    ("kevin16",
    javax.speech.synthesis.Voice.GENDER_DONT_CARE,
    javax.speech.synthesis.Voice.AGE_DONT_CARE, null);
    SynthesizerModeDesc unlimitedDesc = new
    SynthesizerModeDesc
    ("Unlimited domain FreeTTS Speech Synthesizer
    from Sun Labs", null, Locale.US, Boolean.FALSE, null);

    synthesizer = Central.createSynthesizer
    (unlimitedDesc);
    if(synthesizer == null)
    {
    System.err.println(noSynthesizerMessage
    ("unlimited domain synthesizer"));
    return false;
    }

    synthesizer.allocate();
    synthesizer.getSynthesizerProperties().setVoice
    (kevinHQ);
    synthesizer.resume();

    My speak code:

    synthesizer.speakPlainText(words, null);

    try
    {
    synthesizer.waitEngineState
    (Synthesizer.QUEUE_EMPTY);
    }
    catch(InterruptedException x)
    {
    logger.log(Level.SEVERE, "Got exception using voice",
    x);
    }

    My stop code:

    synthesizer.deallocate();

    None of my code is present in the stack dump I get. Just
    some freetts threads hanging around.

    Here is abbreviated/relevant portion of stack dump:

    "Headspace mixer frame proc thread" daemon prio=10
    tid=0x0D746E08 nid=0xa28 in Object.wait()
    [e79f000..e79fd8c]
    at java.lang.Object.wait(Native Method)
    - waiting on <02A53E88> (a
    com.sun.media.sound.MixerThread)
    at java.lang.Object.wait(Object.java:426)
    at com.sun.media.sound.MixerThread.run
    (MixerThread.java:326)
    - locked <02A53E88> (a
    com.sun.media.sound.MixerThread)

    "Java Sound event dispatcher" daemon prio=7
    tid=0x0AE25EE8 nid=0x708 in Object.wait()
    [e4cf000..e4cfd8c]
    at java.lang.Object.wait(Native Method)
    - waiting on <02A0D7C0> (a
    com.sun.media.sound.EventDispatcher)
    at java.lang.Object.wait(Object.java:426)
    at com.sun.media.sound.EventDispatcher.dispatchEvents
    (EventDispatcher.java:294)
    - locked <02A0D7C0> (a
    com.sun.media.sound.EventDispatcher)
    at com.sun.media.sound.EventDispatcher.run
    (EventDispatcher.java:345)
    at java.lang.Thread.run(Thread.java:536)

    "Thread-3" daemon prio=7 tid=0x0D5F86D8 nid=0xc48 in
    Object.wait() [e44f000..e44fd8c]
    at java.lang.Object.wait(Native Method)
    - waiting on <0316D350> (a
    com.sun.speech.freetts.OutputQueue)
    at java.lang.Object.wait(Object.java:426)
    at com.sun.speech.freetts.OutputQueue.pend
    (OutputQueue.java:97)
    - locked <0316D350> (a
    com.sun.speech.freetts.OutputQueue)
    at com.sun.speech.freetts.Voice$1.run(Voice.java:396)

     
  • Willie Walker

    Willie Walker - 2004-03-24
    • status: open --> open-duplicate
     
  • Willie Walker

    Willie Walker - 2004-03-24
    • status: open-duplicate --> open
     
  • Willie Walker

    Willie Walker - 2005-02-04

    Logged In: YES
    user_id=345479

    Hi Mike:

    So sorry for the long delay in this. The good news is that
    I'm taking a look at the problem now. :-) The underlying
    problem might be in the JavaSound support, which we do not
    have control over. I'm curious if you can try the latest
    stuff in CVS, though, to see if that works any better?

    Will

     
  • Willie Walker

    Willie Walker - 2005-02-04
    • labels: --> core engine
    • priority: 9 --> 5
    • assigned_to: nobody --> wwalker
    • status: open --> open-accepted
     
Monday.com Logo