Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@

Funky failure found for function: foo /mnt/scratch0/clusterfuzz/bot/inputs/disk/fuzz-67.js:123
Some data:
Foo bar 1
Baz bar 2
...
More Data (foo = 0)
#
# Fatal error in ../../src/foo/bar.cc, line 123
# Funky failure at token 13
#
#
#
#FailureMessage Object: 0xdeadbeef
==== C stack trace ===============================
/mnt/scratch0/clusterfuzz/bot/builds/v8-asan_linux-debug_8cf/revisions/libv8_libbase.so(V8_Fatal(char const*, int, char const*, ...)+0x67c) [0xdeadbeef]
/mnt/scratch0/clusterfuzz/bot/builds/v8-asan_linux-debug_8cf/revisions/libv8.so(void v8::internal::foo::Bar::Baz1<v8::internal::Isolate>()+0x67c) [0xdeadbeef]
/mnt/scratch0/clusterfuzz/bot/builds/v8-asan_linux-debug_8cf/revisions/libv8.so(void v8::internal::foo::Bar::Baz2<v8::internal::Isolate>()+0x67c) [0xdeadbeef]
/mnt/scratch0/clusterfuzz/bot/builds/v8-asan_linux-debug_8cf/revisions/libv8.so(void v8::internal::foo::Bar::Baz3<v8::internal::Isolate>()+0x67c) [0xdeadbeef]
/mnt/scratch0/clusterfuzz/bot/builds/v8-asan_linux-debug_8cf/revisions/libv8.so(void v8::internal::foo::Bar::Baz4<v8::internal::Isolate>()+0x67c) [0xdeadbeef]
AddressSanitizer:DEADLYSIGNAL
=================================================================
==12345==ERROR: AddressSanitizer: ABRT on unknown address 0xdeadbeef (pc 0xdeadbeef bp 0xdeadbeef sp 0xdeadbeef T0)
SCARINESS: 10 (signal)
#1 0x7e6abaebaa4b in V8_Fatal(char const*, int, char const*, ...) src/base/logging.cc:123:1
#2 0x7e6ab34d5aae in v8::internal::foo::Bar::Baz1<v8::internal::Isolate>() src/foo/bar.cc:123:1
#3 0x7e6ab34d5aae in v8::internal::foo::Bar::Baz2<v8::internal::Isolate>() src/foo/bar.cc:123:1
#4 0x7e6ab34d5aae in v8::internal::foo::Bar::Baz3<v8::internal::Isolate>() src/foo/bar.cc:123:1
#5 0x7e6ab34d5aae in v8::internal::foo::Bar::Baz4<v8::internal::Isolate>() src/foo/bar.cc:123:1
==12345==Register values:
rax = 0x0000000000000000 rbx = 0x0000000000000000 rcx = 0x0000000000000000 rdx = 0x0000000000000000
rdi = 0x0000000000000002 rsi = 0x0000000000000000 rbp = 0x0000000000000000 rsp = 0x0000000000000000
r8 = 0x0000000000000000 r9 = 0x0000000000000000 r10 = 0x0000000000000000 r11 = 0x0000000000000000
r12 = 0x0000000000000000 r13 = 0x0000000000000000 r14 = 0x0000000000000000 r15 = 0x0000000000000000
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: ABRT /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1 in raise
==45454==ABORTING
Original file line number Diff line number Diff line change
Expand Up @@ -1330,6 +1330,21 @@ def test_v8_maglev_type_error(self):
expected_state, expected_stacktrace,
expected_security_flag)

def test_v8_error_with_small_number(self):
"""Test a v8 error with a small number (see https://crbug.com/437859892)."""
data = self._read_test_data('v8_error_with_small_number.txt')
expected_type = 'Fatal error'
expected_address = ''
expected_state = ('Funky failure at token NUMBER in bar.cc\n'
'v8::internal::foo::Bar::Baz1<v8::internal::Isolate>\n'
'v8::internal::foo::Bar::Baz2<v8::internal::Isolate>\n')
expected_stacktrace = data
expected_security_flag = False

self._validate_get_crash_data(data, expected_type, expected_address,
expected_state, expected_stacktrace,
expected_security_flag)

def test_generic_segv(self):
"""Test a SEGV caught by a generic signal handler."""
data = self._read_test_data('generic_segv.txt')
Expand Down
10 changes: 6 additions & 4 deletions src/clusterfuzz/stacktraces/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1403,10 +1403,12 @@ def filter_addresses_and_numbers(stack_frame):
# Cases that we are avoiding:
# - source.cc:1234
# - libsomething-1.0.so (to avoid things like NUMBERso in replacements)
number_expression = r'''(?<![:0-9.]) # not preceeded by any of these
(?:[0-9.]{4,} # either >= 4 digits
|(?<=[@#])[0-9]+) # or preceeded by @ or #
(?![A-Za-z0-9.]) # not followed by any of these
# - very small integer comparisons, e.g. "x >= NUMBER" for "x >= 1"
number_expression = r'''(?<![:0-9.]) # not preceeded by any of these
(?:[0-9.]{4,} # either >= 4 digits
|(?<=\ )[0-9]{2,} # or >= 2 digits after space
|(?<=[@#])[0-9]+) # or preceeded by @ or #
(?![A-Za-z0-9.]) # not followed by any of these
'''
return re.sub(number_expression, 'NUMBER', result, flags=re.X)

Expand Down
Loading