flutter icon indicating copy to clipboard operation
flutter copied to clipboard

[windows] Crash in skia::textlayout::TextLine::buildTextBlob

Open chifandeyu opened this issue 2 years ago • 5 comments

systeminfo:

CPU
Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
os version:
Microsoft Windows 10(19045)

flutter doctor:

[!] Flutter (Channel unknown, 3.3.8, on Microsoft Windows [版本 10.0.19045.2251], locale zh-CN)
    ! Flutter version 3.3.8 on channel unknown at D:\DevTools\flutter3.3.8_custom\flutter
    ! Upstream repository unknown
[!] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    X cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
[√] Chrome - develop for the web
[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.11.3)
[√] Android Studio (version 2020.3)
[√] Connected device (3 available)
[√] HTTP Host Availability

crash stack:

flutter_windows!memcpy+0x180 [d:\a01\_work\6\s\src\vctools\crt\vcruntime\src\string\amd64\memcpy.asm @ 300]
--------`-------- flutter_windows!sk_careful_memcpy+0x1d [flutter_engine\src\third_party\skia\include\private\SkMalloc.h @ 120]
flutter_windows!skia::textlayout::Run::copyTo+0x51 [flutter_engine\src\third_party\skia\modules\skparagraph\src\Run.cpp @ 93]
flutter_windows!skia::textlayout::TextLine::buildTextBlob+0x12d [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 361]
--------`-------- flutter_windows!std::_Func_class<void,skia::textlayout::SkRange<unsigned long long>,const skia::textlayout::TextStyle &,const skia::textlayout::TextLine::ClipContext &>::operator()+0x2d [C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\functional @ 968]
flutter_windows!skia::textlayout::TextLine::iterateThroughSingleRunByStyles+0x25c [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 926]
--------`-------- flutter_windows!skia::textlayout::TextLine::ensureTextBlobCachePopulated::<lambda_3>::operator()+0x58 [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 258]
--------`-------- flutter_windows!std::invoke+0x70 [C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\type_traits @ 1595]
--------`-------- flutter_windows!std::_Invoker_ret<bool,0>::_Call+0x70 [C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\functional @ 753]
flutter_windows!std::_Func_impl_no_alloc<`lambda at ../../third_party/skia/modules/skparagraph/src/TextLine.cpp:250:12',bool,const skia::textlayout::Run *,float,skia::textlayout::SkRange<unsigned long long>,float *>::_Do_call+0x9e [C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\functional @ 920]
flutter_windows!std::_Func_class<bool,const skia::textlayout::Run *,float,skia::textlayout::SkRange<unsigned long long>,float *>::operator()+0x42 [C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\functional @ 968]
flutter_windows!skia::textlayout::TextLine::iterateThroughVisualRuns+0x2b1 [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 966]
flutter_windows!skia::textlayout::TextLine::ensureTextBlobCachePopulated+0xa5 [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 249]
flutter_windows!skia::textlayout::TextLine::paint+0xdd [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 192]
flutter_windows!skia::textlayout::ParagraphImpl::paint+0x4c [flutter_engine\src\third_party\skia\modules\skparagraph\src\ParagraphImpl.cpp @ 211]
flutter_windows!tonic::DartDispatcher<tonic::IndicesHolder<0,1,2>,void (flutter::CanvasPath::*)(flutter::CanvasPath *, double, double)>::Dispatch+0x72 [flutter_engine\src\flutter\third_party\tonic\dart_args.h @ 159]
flutter_windows!tonic::DartCall<void (flutter::CanvasPath::*)(flutter::CanvasPath *, double, double)>+0xe7 [flutter_engine\src\flutter\third_party\tonic\dart_args.h @ 216]
flutter_windows!flutter::Paragraph_paint+0x3a [flutter_engine\src\flutter\lib\ui\text\paragraph.cc @ 40]
flutter_windows!dart::NativeEntry::AutoScopeNativeCallWrapperNoStackCheck+0x8f [flutter_engine\src\third_party\dart\runtime\vm\native_entry.cc @ 218]

error message: 0x00007FFB182C1A40 (flutter_windows.dll) (725123e69270b45e7ee0dcbd4325cb7.dmp 中)处有未经处理的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。

chifandeyu avatar Dec 06 '22 10:12 chifandeyu

There is also a call stack that rendering text crash. stack:

--------`-------- flutter_windows!skia::textlayout::Run::posX+0x11 [flutter_engine\src\third_party\skia\modules\skparagraph\src\Run.h @ 75]
flutter_windows!skia::textlayout::Run::positionX+0x11
flutter_windows!skia::textlayout::TextLine::measureTextInsideOneRun+0x35f [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 743]
flutter_windows!skia::textlayout::TextLine::iterateThroughSingleRunByStyles+0x1f4 [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 917]
--------`-------- flutter_windows!skia::textlayout::TextLine::ensureTextBlobCachePopulated::<lambda_3>::operator()+0x58 [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 258]
--------`-------- flutter_windows!std::invoke+0x70 [C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\type_traits @ 1595]
--------`-------- flutter_windows!std::_Invoker_ret<bool,0>::_Call+0x70 [C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\functional @ 753]
flutter_windows!std::_Func_impl_no_alloc<`lambda at ../../third_party/skia/modules/skparagraph/src/TextLine.cpp:250:12',bool,const skia::textlayout::Run *,float,skia::textlayout::SkRange<unsigned long long>,float *>::_Do_call+0x9e [C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\functional @ 920]
flutter_windows!std::_Func_class<bool,const skia::textlayout::Run *,float,skia::textlayout::SkRange<unsigned long long>,float *>::operator()+0x42 [C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\functional @ 968]
flutter_windows!skia::textlayout::TextLine::iterateThroughVisualRuns+0x2b1 [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 966]
flutter_windows!skia::textlayout::TextLine::ensureTextBlobCachePopulated+0xa5 [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 249]
flutter_windows!skia::textlayout::TextLine::paint+0xdd [flutter_engine\src\third_party\skia\modules\skparagraph\src\TextLine.cpp @ 192]
flutter_windows!skia::textlayout::ParagraphImpl::paint+0x4c [flutter_engine\src\third_party\skia\modules\skparagraph\src\ParagraphImpl.cpp @ 211]
flutter_windows!tonic::DartDispatcher<tonic::IndicesHolder<0,1,2>,void (flutter::CanvasPath::*)(flutter::CanvasPath *, double, double)>::Dispatch+0x72 [flutter_engine\src\flutter\third_party\tonic\dart_args.h @ 159]
flutter_windows!tonic::DartCall<void (flutter::CanvasPath::*)(flutter::CanvasPath *, double, double)>+0xe7 [flutter_engine\src\flutter\third_party\tonic\dart_args.h @ 216]
flutter_windows!flutter::Paragraph_paint+0x3a [flutter_engine\src\flutter\lib\ui\text\paragraph.cc @ 40]
flutter_windows!dart::NativeEntry::AutoScopeNativeCallWrapperNoStackCheck+0x8f [flutter_engine\src\third_party\dart\runtime\vm\native_entry.cc @ 218]

chifandeyu avatar Dec 06 '22 10:12 chifandeyu

Hello @chifandeyu. Thank you for filing this issue. Can you please provide the following information?

Please provide the information in the form of text. See how to make collapsible sections with Markdown here.

exaby73 avatar Dec 06 '22 13:12 exaby73

Hello @chifandeyu. Thank you for filing this issue. Can you please provide the following information?

Please provide the information in the form of text. See how to make collapsible sections with Markdown here.

Sorry. The call stack from users through the exception reporting system. Crashing randomly in use, and our project has many components.

chifandeyu avatar Dec 06 '22 13:12 chifandeyu

Alright thank you for the information. I'll label this issue for insights and investigation from the team

exaby73 avatar Dec 06 '22 14:12 exaby73

Analysis from the user feedback. Rendering to the text contains special characters. The overflow is set to the textoverflow.ellipsis.

chifandeyu avatar Dec 08 '22 15:12 chifandeyu

/cc @Rusino

LongCatIsLooong avatar Dec 08 '22 23:12 LongCatIsLooong

estext.txt

chifandeyu avatar Dec 09 '22 04:12 chifandeyu

estext.txt

This is the special text that we have rendered. @exaby73

chifandeyu avatar Dec 09 '22 05:12 chifandeyu

Thank you. Special text + ellipsis. I am going to work on it.

Rusino avatar Dec 09 '22 12:12 Rusino

Thank you. Special text + ellipsis. I am going to work on it.

Maybe my description is wrong. This one has a stack that is the same as the crash reproduce #https://github.com/flutter/flutter/issues/109825

chifandeyu avatar Dec 09 '22 12:12 chifandeyu