Bug 250656
Summary: | [GStreamer] Fix a failure of fast/speechsynthesis/voices-non-mock.html | ||
---|---|---|---|
Product: | WebKit | Reporter: | ChangSeok Oh <changseok> |
Component: | WebKitGTK | Assignee: | ChangSeok Oh <changseok> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | bugs-noreply, cfleizach, philn |
Priority: | P2 | ||
Version: | WebKit Nightly Build | ||
Hardware: | Unspecified | ||
OS: | Unspecified |
ChangSeok Oh
SSIA.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
ChangSeok Oh
20:34:53.697 2 summarizing results
20:34:53.697 2 Test timing:
20:34:53.697 2 63.08 total testing time
20:34:53.697 2
20:34:53.697 2 Thread timing:
20:34:53.697 2 worker/0: 13 tests, 34.97 secs
20:34:53.697 2 34.97 cumulative, 5.00 optimal
20:34:53.697 2
20:34:53.697 2 PER TEST TIME IN TESTSHELL (seconds):
20:34:53.697 2 Median: 0.133
20:34:53.697 2 Mean: 2.637
20:34:53.697 2 90th percentile: 1.020
20:34:53.697 2 99th percentile: 31.310
20:34:53.697 2 Standard dev: 7.953
20:34:53.697 2
20:34:53.697 2
20:34:53.697 2 10 slowest tests that are not marked as SLOW and did not timeout/crash:
20:34:53.697 2 fast/speechsynthesis/speech-synthesis-speak-empty-string.html took 1.0 seconds
20:34:53.697 2 fast/speechsynthesis/speech-synthesis-boundary-events.html took 0.9 seconds
20:34:53.697 2 fast/speechsynthesis/speech-synthesis-pause-resume.html took 0.2 seconds
20:34:53.697 2 fast/speechsynthesis/speech-synthesis-utterance-uses-voice.html took 0.2 seconds
20:34:53.697 2 fast/speechsynthesis/speech-synthesis-gc-utterance-crash.html took 0.2 seconds
20:34:53.698 2 fast/speechsynthesis/speech-synthesis-speak.html took 0.2 seconds
20:34:53.698 2 fast/speechsynthesis/speech-synthesis-elapsed-time.html took 0.1 seconds
20:34:53.698 2 fast/speechsynthesis/speech-synthesis-cancel-crash.html took 0.1 seconds
20:34:53.698 2 fast/speechsynthesis/speech-synthesis-cancel.html took 0.1 seconds
20:34:53.698 2 fast/speechsynthesis/speech-synthesis-voices.html took 0.1 seconds
20:34:53.698 2
20:34:53.698 2 Tests marked as SLOW:
20:34:53.698 2
20:34:53.698 2 Tests that timed out or crashed:
20:34:53.698 2 fast/speechsynthesis/speech-synthesis-real-client-version.html took 31.3 seconds
20:34:53.698 2
20:34:53.698 2 Time to process slowest subdirectories:
20:34:53.698 2 all_tests took 35.0 seconds to run 13 tests.
20:34:53.698 2
20:34:53.698 2
20:34:53.698 2 22 tests ran as expected, 4 didn't:
20:34:53.698 2
20:34:53.698 2 Writing JSON files in /app/webkit/WebKitBuild/Release/layout-test-results.
20:34:53.699 2 Finished writing JSON file for the test results server.
20:34:53.702 2 Testing completed, Exit status: 2
=> Results: 22/26 tests passed (84.6%)
=> Tests to be fixed (2):
1 crashes (50.0%)
=> Tests that will only be fixed if they crash (WONTFIX) (0):
Regressions: Unexpected crashes (1)
fast/speechsynthesis/speech-synthesis-real-client-version.html [ Crash ]
Regressions: Unexpected text-only failures (1)
fast/speechsynthesis/voices-non-mock.html [ Failure ]
Philippe Normand
Can you post the crash backtrace?
ChangSeok Oh
(In reply to Philippe Normand from comment #2)
> Can you post the crash backtrace?
Sure.
#0 0x00007ffff1ecbdd8 in WTF::String::tryGetUTF8(WTF::ConversionMode) const ()
from target:/app/webkit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.1.so.0
#1 0x00007ffff1ecbea0 in WTF::String::utf8(WTF::ConversionMode) const ()
from target:/app/webkit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.1.so.0
#2 0x00007ffff51985ea in webKitFliteSrcSetUtterance(_WebKitFliteSrc*, WTF::String const&, WebCore::PlatformSpeechSynthesisVoice const&) () from target:/app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0
#3 0x00007ffff51914e8 in WebCore::GstSpeechSynthesisWrapper::speakUtterance(WTF::RefPtr<WebCore::PlatformSpeechSynthesisUtterance, WTF::RawPtrTraits<WebCore::PlatformSpeechSynthesisUtterance>, WTF::DefaultRefDerefTraits<WebCore::PlatformSpeechSynthesisUtterance> >&&) [clone .part.0] ()
from target:/app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0
#4 0x00007ffff51923f5 in WebCore::PlatformSpeechSynthesizer::speak(WTF::RefPtr<WebCore::PlatformSpeechSynthesisUtterance, WTF::RawPtrTraits<WebCore::PlatformSpeechSynthesisUtterance>, WTF::DefaultRefDerefTraits<WebCore::PlatformSpeechSynthesisUtterance> >&&) ()
from target:/app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0
#5 0x00007ffff5f5f312 in WebCore::SpeechSynthesis::startSpeakingImmediately(WebCore::SpeechSynthesisUtterance&) () from target:/app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0
#6 0x00007ffff5b39f98 in WebCore::jsSpeechSynthesisPrototypeFunction_speak(JSC::JSGlobalObject*, JSC::CallFrame*) () from target:/app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0
#7 0x00007fff90008038 in ?? ()
#8 0x00007fffffffc180 in ?? ()
#9 0x00007ffff093a5e4 in js_trampoline_op_call ()
from target:/app/webkit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.1.so.0
#10 0x0000000000000000 in ?? ()
The fix is coming. But we need to discuss the failure for fast/speechsynthesis/voices-non-mock.html
The GTK/WPE fails in shouldBeTrue("voiceCount > 20"). This means we need more than 20 voices to pass the test. Currently, GTK/WPE ports have 4 voices. I don't know why 20 here though, a possible fix is to make it shouldBeTrue("voiceCount > 0")? Any thought?
chris fleizach
(In reply to ChangSeok Oh from comment #3)
> (In reply to Philippe Normand from comment #2)
> > Can you post the crash backtrace?
>
> Sure.
>
> #0 0x00007ffff1ecbdd8 in WTF::String::tryGetUTF8(WTF::ConversionMode) const
> ()
> from
> target:/app/webkit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.1.so.0
>
> #1 0x00007ffff1ecbea0 in WTF::String::utf8(WTF::ConversionMode) const ()
>
> from
> target:/app/webkit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.1.so.0
>
> #2 0x00007ffff51985ea in webKitFliteSrcSetUtterance(_WebKitFliteSrc*,
> WTF::String const&, WebCore::PlatformSpeechSynthesisVoice const&) () from
> target:/app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0
> #3 0x00007ffff51914e8 in
> WebCore::GstSpeechSynthesisWrapper::speakUtterance(WTF::RefPtr<WebCore::
> PlatformSpeechSynthesisUtterance,
> WTF::RawPtrTraits<WebCore::PlatformSpeechSynthesisUtterance>,
> WTF::DefaultRefDerefTraits<WebCore::PlatformSpeechSynthesisUtterance> >&&)
> [clone .part.0] ()
> from target:/app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0
>
> #4 0x00007ffff51923f5 in
> WebCore::PlatformSpeechSynthesizer::speak(WTF::RefPtr<WebCore::
> PlatformSpeechSynthesisUtterance,
> WTF::RawPtrTraits<WebCore::PlatformSpeechSynthesisUtterance>,
> WTF::DefaultRefDerefTraits<WebCore::PlatformSpeechSynthesisUtterance> >&&) ()
> from target:/app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0
>
> #5 0x00007ffff5f5f312 in
> WebCore::SpeechSynthesis::startSpeakingImmediately(WebCore::
> SpeechSynthesisUtterance&) () from
> target:/app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0
> #6 0x00007ffff5b39f98 in
> WebCore::jsSpeechSynthesisPrototypeFunction_speak(JSC::JSGlobalObject*,
> JSC::CallFrame*) () from
> target:/app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.1.so.0
> #7 0x00007fff90008038 in ?? ()
>
> #8 0x00007fffffffc180 in ?? ()
>
> #9 0x00007ffff093a5e4 in js_trampoline_op_call ()
>
> from
> target:/app/webkit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.1.so.0
>
> #10 0x0000000000000000 in ?? ()
>
> The fix is coming. But we need to discuss the failure for
> fast/speechsynthesis/voices-non-mock.html
>
> The GTK/WPE fails in shouldBeTrue("voiceCount > 20"). This means we need
> more than 20 voices to pass the test. Currently, GTK/WPE ports have 4
> voices. I don't know why 20 here though, a possible fix is to make it
> shouldBeTrue("voiceCount > 0")? Any thought?
That was fairly specific for Apple platforms. The number is irrelevant as long as you can confirm you're getting something expected. If, on Mac, we only got 4 voices, that would be a regression...
Philippe Normand
The value should be queried through a new Internals method then. There we can handle the various platforms and what they expect.
ChangSeok Oh
(In reply to Philippe Normand from comment #5)
> The value should be queried through a new Internals method then. There we
> can handle the various platforms and what they expect.
O.K. It sounds like more effort than expected. Let's spin off the crash into a separate bug [1]. I will fix it first.
[1] https://bugs.webkit.org/show_bug.cgi?id=251056
ChangSeok Oh
(In reply to Philippe Normand from comment #5)
> The value should be queried through a new Internals method then. There we
> can handle the various platforms and what they expect.
I thought about adding a new method to the Internals a bit. Do we expect the new method returns a hard-coded value of the expected voice count or available voice count on the testing platform? For the latter, adding a new method is pointless I think. Because the new method returns the same value of window.speechSynthesis.getVoices().length in the test.
If the purpose of the test checks if speechSynthesis is properly initialized with some voices, I think testing shouldBeTrue("voiceCount > 0") should be enough for all platforms. Any thought?
Philippe Normand
> If the purpose of the test checks if speechSynthesis is properly initialized with some voices, I think testing shouldBeTrue("voiceCount > 0") should be enough for all platforms. Any thought?
IIUC Chris's comment this kind of test wouldn't be sufficient for Apple platforms. Maybe I misunderstood...
ChangSeok Oh
(In reply to Philippe Normand from comment #8)
> > If the purpose of the test checks if speechSynthesis is properly initialized with some voices, I think testing shouldBeTrue("voiceCount > 0") should be enough for all platforms. Any thought?
>
> IIUC Chris's comment this kind of test wouldn't be sufficient for Apple
> platforms. Maybe I misunderstood...
Well, then we go to a route of adding an Internals method that returns a hard-coded value for the testing platform.
ChangSeok Oh
Pull request: https://github.com/WebKit/WebKit/pull/9429
ChangSeok Oh
Pull request: https://github.com/WebKit/WebKit/pull/9461
EWS
Committed 259820@main (3aad9165b15d): <https://commits.webkit.org/259820@main>
Reviewed commits have been landed. Closing PR #9429 and removing active labels.