Skip to content

Commit 96ffdd7

Browse files
authored
Add Skia stack trace to ignore (#3640)
Because https://clusterfuzz.com/testcase-detail/5934327558242304 is not ideal
1 parent cafc1cb commit 96ffdd7

File tree

3 files changed

+161
-0
lines changed

3 files changed

+161
-0
lines changed
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
2+
[0115/090948.959721:FATAL:SkMutex.h(41)] check(fOwner == kIllegalThreadID)
3+
#0 0x56db0c75ad86 <unknown>
4+
#1 0x792fdb880d94 <unknown>
5+
#2 0x792fdb758577 <unknown>
6+
#3 0x792fdb758365 <unknown>
7+
#4 0x792fdabeb567 <unknown>
8+
#5 0x792fdabeb0e5 <unknown>
9+
#6 0x792fcd9dacc9 <unknown>
10+
#7 0x792fce014b62 <unknown>
11+
#8 0x792fce014a90 <unknown>
12+
#9 0x792fce014729 <unknown>
13+
#10 0x792fb88548a7 <unknown>
14+
#11 0x792fb8854a60 <unknown>
15+
#12 0x792fdabee992 <unknown>
16+
#13 0x792fdac12c57 <unknown>
17+
#14 0x792fdac129bd <unknown>
18+
#15 0x792fdabed39b <unknown>
19+
#16 0x792fdabebf9d <unknown>
20+
#17 0x792fdabeb0e5 <unknown>
21+
#18 0x792fcd9dacc9 <unknown>
22+
#19 0x792fce336f75 <unknown>
23+
#20 0x792fd08272be <unknown>
24+
#21 0x792fd082623e <unknown>
25+
#22 0x792fd0824612 <unknown>
26+
#23 0x792fd0823eed <unknown>
27+
#24 0x792fd0822fb0 <unknown>
28+
#25 0x792fd0820ab2 <unknown>
29+
#26 0x792fcfcb047b <unknown>
30+
#27 0x792fcfcb49eb <unknown>
31+
#28 0x792fd07cd7b5 <unknown>
32+
#29 0x792fcfcb047b <unknown>
33+
#30 0x792fcfcb49eb <unknown>
34+
#31 0x792fd07f477c <unknown>
35+
#32 0x792fcfcb047b <unknown>
36+
#33 0x792fcfaf8102 <unknown>
37+
#34 0x792fcfaebd38 <unknown>
38+
#35 0x792fcfb38e20 <unknown>
39+
#36 0x792fcfb2e824 <unknown>
40+
#37 0x792fcfb2e755 <unknown>
41+
#38 0x792fcfb2e6f5 <unknown>
42+
#39 0x792fcfb2e695 <unknown>
43+
#40 0x792fcfb2e635 <unknown>
44+
#41 0x792fcfb2e5d5 <unknown>
45+
#42 0x792fcfb10fe5 <unknown>
46+
#43 0x792fcfb144ba <unknown>
47+
#44 0x792fcfb0c989 <unknown>
48+
#45 0x792fc9b94536 <unknown>
49+
#46 0x792fc9acfbd0 <unknown>
50+
#47 0x792fc9acf895 <unknown>
51+
#48 0x792fc9b0d8df <unknown>
52+
#49 0x792fc9b0d6c1 <unknown>
53+
#50 0x792fc9b0820a <unknown>
54+
#51 0x792fc9ad9f44 <unknown>
55+
#52 0x792fdfc512fa <unknown>
56+
#53 0x792fdfc21a48 <unknown>
57+
#54 0x792fdfc369ff <unknown>
58+
#55 0x792fdfc3409b <unknown>
59+
#56 0x792fdd23e662 <unknown>
60+
#57 0x792fdd23a951 <unknown>
61+
#58 0x56db0c7f0220 <unknown>
62+
#59 0x56db0c7efc60 <unknown>
63+
#60 0x56db0c8d58bc <unknown>
64+
#61 0x56db0c8542ac <unknown>
65+
#62 0x56db0c85c465 <unknown>
66+
#63 0x56db0c806570 <unknown>
67+
#64 0x792fb8832083 <unknown>
68+
#65 0x56db0c716afa <unknown>
69+
==714932== ERROR: libFuzzer: fuzz target exited
70+
==714932==WARNING: invalid path to external symbolizer!
71+
==714932==WARNING: Failed to use and restart external symbolizer!
72+
#0 0x56db0c7b9ff1 in __sanitizer_print_stack_trace third_party/llvm/compiler-rt/lib/asan/asan_stack.cpp:87:3
73+
#1 0x56db0c98eb81 in fuzzer::PrintStackTrace() third_party/libFuzzer/src/FuzzerUtil.cpp:210:5
74+
#2 0x56db0c8d22f2 in fuzzer::Fuzzer::ExitCallback() third_party/libFuzzer/src/FuzzerLoop.cpp:248:3
75+
#3 0x56db0c8d21e6 in fuzzer::Fuzzer::StaticExitCallback() third_party/libFuzzer/src/FuzzerLoop.cpp:207:6
76+
#4 0x792fb88548a6 in __run_exit_handlers /build/glibc-BHL3KM/glibc-2.31/stdlib/exit.c:108:8
77+
#5 0x792fb8854a5f in exit /build/glibc-BHL3KM/glibc-2.31/stdlib/exit.c:139:3
78+
#6 0x792fdabee991 in ImmediateCrash base/immediate_crash.h:174:3
79+
#7 0x792fdabee991 in logging::LogMessage::HandleFatal(unsigned long, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char>> const&) const base/logging.cc:1036:5
80+
#8 0x792fdac12c56 in logging::LogMessage::Flush()::$_0::operator()() const base/logging.cc:740:7
81+
#9 0x792fdac129bc in absl::cleanup_internal::Storage<logging::LogMessage::Flush()::$_0>::InvokeCallback() third_party/abseil-cpp/absl/cleanup/internal/cleanup.h:87:5
82+
#10 0x792fdabed39a in absl::Cleanup<absl::cleanup_internal::Tag, logging::LogMessage::Flush()::$_0>::~Cleanup() third_party/abseil-cpp/absl/cleanup/cleanup.h:106:16
83+
#11 0x792fdabebf9c in logging::LogMessage::Flush() base/logging.cc:923:1
84+
#12 0x792fdabeb0e4 in logging::LogMessage::~LogMessage() base/logging.cc:695:3
85+
#13 0x792fcd9dacc8 in SkAbort_FileLine(char const*, int, char const*, ...) skia/ext/google_logging.cc:42:3
86+
#14 0x792fce014b61 in SkMutex::assertNotHeld()::'lambda'()::operator()() const third_party/skia/include/private/base/SkMutex.h:41:9
87+
#15 0x792fce014a8f in SkMutex::assertNotHeld() third_party/skia/include/private/base/SkMutex.h:41:9
88+
#16 0x792fce014728 in SkMutex::~SkMutex() third_party/skia/include/private/base/SkMutex.h:22:15
89+
#17 0x792fb88548a6 in __run_exit_handlers /build/glibc-BHL3KM/glibc-2.31/stdlib/exit.c:108:8
90+
#18 0x792fb8854a5f in exit /build/glibc-BHL3KM/glibc-2.31/stdlib/exit.c:139:3
91+
#19 0x792fdabee991 in ImmediateCrash base/immediate_crash.h:174:3
92+
#20 0x792fdabee991 in logging::LogMessage::HandleFatal(unsigned long, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char>> const&) const base/logging.cc:1036:5
93+
#21 0x792fdac12c56 in logging::LogMessage::Flush()::$_0::operator()() const base/logging.cc:740:7
94+
#22 0x792fdac129bc in absl::cleanup_internal::Storage<logging::LogMessage::Flush()::$_0>::InvokeCallback() third_party/abseil-cpp/absl/cleanup/internal/cleanup.h:87:5
95+
#23 0x792fdabed39a in absl::Cleanup<absl::cleanup_internal::Tag, logging::LogMessage::Flush()::$_0>::~Cleanup() third_party/abseil-cpp/absl/cleanup/cleanup.h:106:16
96+
#24 0x792fdabebf9c in logging::LogMessage::Flush() base/logging.cc:923:1
97+
#25 0x792fdabeb0e4 in logging::LogMessage::~LogMessage() base/logging.cc:695:3
98+
#26 0x792fcd9dacc8 in SkAbort_FileLine(char const*, int, char const*, ...) skia/ext/google_logging.cc:42:3
99+
#27 0x792fce336f74 in SkMakeRuntimeEffect(SkRuntimeEffect::Result (*)(SkString, SkRuntimeEffect::Options const&), char const*, SkRuntimeEffect::Options) third_party/skia/src/core/SkRuntimeEffectPriv.h:164:9
100+
#28 0x792fd08272bd in get_runtime_effect(int, int)::$_1::operator()(SkISize) const third_party/skia/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp:430:16
101+
#29 0x792fd082623d in get_runtime_effect(int, int) third_party/skia/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp:466:46
102+
#30 0x792fd0824611 in (anonymous namespace)::SkMatrixConvolutionImageFilter::createShader(skif::Context const&, sk_sp<SkShader>) const third_party/skia/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp:482:19
103+
#31 0x792fd0823eec in (anonymous namespace)::SkMatrixConvolutionImageFilter::onFilterImage(skif::Context const&) const::$_0::operator()(SkSpan<sk_sp<SkShader>>) const third_party/skia/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp:537:22
104+
#32 0x792fd0822faf in skif::FilterResult skif::FilterResult::Builder::eval<(anonymous namespace)::SkMatrixConvolutionImageFilter::onFilterImage(skif::Context const&) const::$_0>((anonymous namespace)::SkMatrixConvolutionImageFilter::onFilterImage(skif::Context const&) const::$_0, std::__Cr::optional<skif::LayerSpace<SkIRect>>, bool) third_party/skia/src/core/SkImageFilterTypes.h:982:33
105+
#33 0x792fd0820ab1 in (anonymous namespace)::SkMatrixConvolutionImageFilter::onFilterImage(skif::Context const&) const third_party/skia/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp:536:20
106+
#34 0x792fcfcb047a in SkImageFilter_Base::filterImage(skif::Context const&) const third_party/skia/src/core/SkImageFilter.cpp:253:20
107+
#35 0x792fcfcb49ea in SkImageFilter_Base::getChildOutput(int, skif::Context const&) const third_party/skia/src/core/SkImageFilter.cpp:378:35
108+
#36 0x792fd07cd7b4 in (anonymous namespace)::SkBlurImageFilter::onFilterImage(skif::Context const&) const third_party/skia/src/effects/imagefilters/SkBlurImageFilter.cpp:917:44
109+
#37 0x792fcfcb047a in SkImageFilter_Base::filterImage(skif::Context const&) const third_party/skia/src/core/SkImageFilter.cpp:253:20
110+
#38 0x792fcfcb49ea in SkImageFilter_Base::getChildOutput(int, skif::Context const&) const third_party/skia/src/core/SkImageFilter.cpp:378:35
111+
#39 0x792fd07f477b in (anonymous namespace)::SkDisplacementMapImageFilter::onFilterImage(skif::Context const&) const third_party/skia/src/effects/imagefilters/SkDisplacementMapImageFilter.cpp:240:19
112+
#40 0x792fcfcb047a in SkImageFilter_Base::filterImage(skif::Context const&) const third_party/skia/src/core/SkImageFilter.cpp:253:20
113+
#41 0x792fcfaf8101 in SkCanvas::internalDrawDeviceWithFilter(SkDevice*, SkDevice*, SkSpan<sk_sp<SkImageFilter>>, SkPaint const&, SkCanvas::DeviceCompatibleWithFilter, float, bool) third_party/skia/src/core/SkCanvas.cpp:866:48
114+
#42 0x792fcfaebd37 in SkCanvas::internalRestore() third_party/skia/src/core/SkCanvas.cpp:1457:23
115+
#43 0x792fcfb38e1f in AutoLayerForImageFilter::~AutoLayerForImageFilter() third_party/skia/src/core/SkCanvasPriv.cpp:212:18
116+
#44 0x792fcfb2e823 in std::__Cr::__optional_destruct_base<AutoLayerForImageFilter, false>::~__optional_destruct_base() third_party/libc++/src/include/optional:299:15
117+
#45 0x792fcfb2e754 in std::__Cr::__optional_storage_base<AutoLayerForImageFilter, false>::~__optional_storage_base() third_party/libc++/src/include/optional:354:8
118+
#46 0x792fcfb2e6f4 in std::__Cr::__optional_copy_base<AutoLayerForImageFilter, false>::~__optional_copy_base() third_party/libc++/src/include/optional:471:8
119+
#47 0x792fcfb2e694 in std::__Cr::__optional_move_base<AutoLayerForImageFilter, false>::~__optional_move_base() third_party/libc++/src/include/optional:491:8
120+
#48 0x792fcfb2e634 in std::__Cr::__optional_copy_assign_base<AutoLayerForImageFilter, false>::~__optional_copy_assign_base() third_party/libc++/src/include/optional:515:8
121+
#49 0x792fcfb2e5d4 in std::__Cr::__optional_move_assign_base<AutoLayerForImageFilter, false>::~__optional_move_assign_base() third_party/libc++/src/include/optional:539:8
122+
#50 0x792fcfb10fe4 in std::__Cr::optional<AutoLayerForImageFilter>::~optional() third_party/libc++/src/include/optional:581:36
123+
#51 0x792fcfb144b9 in SkCanvas::onDrawPath(SkPath const&, SkPaint const&) third_party/skia/src/core/SkCanvas.cpp:2380:1
124+
#52 0x792fcfb0c988 in SkCanvas::drawPath(SkPath const&, SkPaint const&) third_party/skia/src/core/SkCanvas.cpp:2040:11
125+
#53 0x792fc9b94535 in cc::DrawPathOp::RasterWithFlags(cc::DrawPathOp const*, cc::PaintFlags const*, SkCanvas*, cc::PlaybackParams const&)::$_0::operator()(SkCanvas*, SkPaint const&) const cc/paint/paint_op.cc:1291:8
126+
#54 0x792fc9acfbcf in void cc::PaintFlags::DrawToSk<cc::DrawPathOp::RasterWithFlags(cc::DrawPathOp const*, cc::PaintFlags const*, SkCanvas*, cc::PlaybackParams const&)::$_0>(SkCanvas*, cc::DrawPathOp::RasterWithFlags(cc::DrawPathOp const*, cc::PaintFlags const*, SkCanvas*, cc::PlaybackParams const&)::$_0) const cc/paint/paint_flags.h:225:7
127+
#55 0x792fc9acf894 in cc::DrawPathOp::RasterWithFlags(cc::DrawPathOp const*, cc::PaintFlags const*, SkCanvas*, cc::PlaybackParams const&) cc/paint/paint_op.cc:1290:10
128+
#56 0x792fc9b0d8de in cc::(anonymous namespace)::Rasterizer<cc::DrawPathOp, true>::Raster(cc::DrawPathOp const*, SkCanvas*, cc::PlaybackParams const&) cc/paint/paint_op.cc:201:5
129+
#57 0x792fc9b0d6c0 in cc::(anonymous namespace)::$_29::operator()(cc::PaintOp const*, SkCanvas*, cc::PlaybackParams const&) const cc/paint/paint_op.cc:213:64
130+
#58 0x792fc9b08209 in cc::(anonymous namespace)::$_29::__invoke(cc::PaintOp const*, SkCanvas*, cc::PlaybackParams const&) cc/paint/paint_op.cc:213:64
131+
#59 0x792fc9ad9f43 in cc::PaintOp::Raster(SkCanvas*, cc::PlaybackParams const&) const cc/paint/paint_op.cc:1697:3
132+
#60 0x792fdfc512f9 in gpu::raster::RasterDecoderImpl::DoRasterCHROMIUM(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) gpu/command_buffer/service/raster_decoder.cc:3217:22
133+
#61 0x792fdfc21a47 in gpu::raster::RasterDecoderImpl::HandleRasterCHROMIUM(unsigned int, void const volatile*) gpu/command_buffer/service/raster_decoder_autogen.h:154:3
134+
#62 0x792fdfc369fe in gpu::error::Error gpu::raster::RasterDecoderImpl::DoCommandsImpl<false>(unsigned int, void const volatile*, int, int*) gpu/command_buffer/service/raster_decoder.cc:1596:18
135+
#63 0x792fdfc3409a in gpu::raster::RasterDecoderImpl::DoCommands(unsigned int, void const volatile*, int, int*) gpu/command_buffer/service/raster_decoder.cc:1657:12
136+
#64 0x792fdd23e661 in gpu::CommandBufferService::Flush(int, gpu::AsyncAPIInterface*) gpu/command_buffer/service/command_buffer_service.cc:232:35
137+
#65 0x792fdd23a950 in gpu::CommandBufferDirect::Flush(int) gpu/command_buffer/service/command_buffer_direct.cc:44:12
138+
#66 0x56db0c7f021f in gpu::(anonymous namespace)::CommandBufferSetup::RunCommandBuffer(unsigned char const*, unsigned long) gpu/command_buffer/tests/fuzzer_main.cc:560:22
139+
#67 0x56db0c7efc5f in LLVMFuzzerTestOneInput gpu/command_buffer/tests/fuzzer_main.cc:679:17
140+
#68 0x56db0c8d58bb in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) third_party/libFuzzer/src/FuzzerLoop.cpp:614:13
141+
#69 0x56db0c8542ab in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) third_party/libFuzzer/src/FuzzerDriver.cpp:327:6
142+
#70 0x56db0c85c464 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) third_party/libFuzzer/src/FuzzerDriver.cpp:862:9
143+
#71 0x56db0c80656f in main third_party/libFuzzer/src/FuzzerMain.cpp:20:10
144+
#72 0x792fb8832082 in __libc_start_main /build/glibc-BHL3KM/glibc-2.31/csu/libc-start.c:308:16
145+
#73 0x56db0c716af9 in _start

src/clusterfuzz/_internal/tests/core/crash_analysis/stack_parsing/stack_analyzer_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3599,6 +3599,18 @@ def test_ignore_absl_log_internal(self):
35993599
expected_state, expected_stacktrace,
36003600
expected_security_flag)
36013601

3602+
def test_ignore_skia_abort(self):
3603+
"""Test ignore SkAbort_FileLine and SkMutex::~SkMutex"""
3604+
data = self._read_test_data("skia_abort.txt")
3605+
expected_type = 'Unexpected-exit'
3606+
expected_state = 'ImmediateCrash\nImmediateCrash\nSkMakeRuntimeEffect\n'
3607+
expected_address = ''
3608+
expected_stacktrace = data
3609+
expected_security_flag = False
3610+
self._validate_get_crash_data(data, expected_type, expected_address,
3611+
expected_state, expected_stacktrace,
3612+
expected_security_flag)
3613+
36023614
def test_ignore_clusterfuzz_file_paths(self):
36033615
"""Test ignore ClusterFuzz specific file paths"""
36043616
data = self._read_test_data('windows_crash_log.txt')

src/clusterfuzz/stacktraces/constants.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,10 @@
611611

612612
# google3 specific stack frame ignores.
613613
r'^absl::log_internal::',
614+
615+
# Skia specific stack frame ignores
616+
r'^SkAbort_FileLine',
617+
r'^SkMutex::~SkMutex', # sometimes released atexit giving a secondary crash
614618
]
615619

616620
STACK_FRAME_IGNORE_REGEXES_IF_SYMBOLIZED = [

0 commit comments

Comments
 (0)