| 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 | ||
|
Description
ChangSeok Oh
2023-01-15 15:52:11 PST
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 ]
Can you post the crash backtrace? (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? (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... The value should be queried through a new Internals method then. There we can handle the various platforms and what they expect. (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 (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? > 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...
(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. Pull request: https://github.com/WebKit/WebKit/pull/9429 Pull request: https://github.com/WebKit/WebKit/pull/9461 Committed 259820@main (3aad9165b15d): <https://commits.webkit.org/259820@main> Reviewed commits have been landed. Closing PR #9429 and removing active labels. |