Skip to content

Commit 2dafa39

Browse files
Make find_main_crash uworker safe (#4403)
1 parent a8317ae commit 2dafa39

File tree

2 files changed

+8
-12
lines changed

2 files changed

+8
-12
lines changed

src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from typing import Any
2424
from typing import Dict
2525
from typing import List
26+
from typing import Optional
2627

2728
from google.cloud import ndb
2829

@@ -313,7 +314,8 @@ def to_proto(self):
313314
return crash
314315

315316

316-
def find_main_crash(crashes: List[Crash], full_fuzzer_name: str,
317+
def find_main_crash(crashes: List[Crash],
318+
fuzz_target: Optional[data_types.FuzzTarget],
317319
test_timeout: int, upload_urls: UploadUrlCollection):
318320
"""Find the first reproducible crash or the first valid crash. And return the
319321
crash and the one_time_crasher_flag."""
@@ -331,7 +333,6 @@ def find_main_crash(crashes: List[Crash], full_fuzzer_name: str,
331333
# security flag and crash state generated from re-running testcase in
332334
# test_for_reproducibility. Minimize task will later update the new crash
333335
# type and crash state parameters.
334-
fuzz_target = data_handler.get_fuzz_target(full_fuzzer_name)
335336
if testcase_manager.test_for_reproducibility(
336337
fuzz_target,
337338
crash.file_path,
@@ -364,13 +365,8 @@ def __init__(self, crashes: List[Crash], context,
364365
assert crashes[0].security_flag == c.security_flag
365366

366367
self.crashes = crashes
367-
if context.fuzz_target:
368-
fully_qualified_fuzzer_name = context.fuzz_target.fully_qualified_name()
369-
else:
370-
fully_qualified_fuzzer_name = context.fuzzer_name
371-
372368
self.main_crash, self.one_time_crasher_flag = find_main_crash(
373-
crashes, fully_qualified_fuzzer_name, context.test_timeout, upload_urls)
369+
crashes, context.fuzz_target, context.test_timeout, upload_urls)
374370

375371
self.newly_created_testcase = None
376372

src/clusterfuzz/_internal/tests/core/bot/tasks/utasks/fuzz_task_test.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,7 @@ def test_no_existing_testcase(self):
501501

502502
self.assertTrue(fuzz_task._should_create_testcase(group, None))
503503
self.mock.find_main_crash.assert_called_once_with(
504-
self.crashes, 'test', self.context.test_timeout, upload_urls)
504+
self.crashes, None, self.context.test_timeout, upload_urls)
505505

506506
self.assertEqual(self.crashes[0], group.main_crash)
507507

@@ -515,7 +515,7 @@ def test_has_existing_reproducible_testcase(self):
515515

516516
self.assertEqual(self.crashes[0].gestures, group.main_crash.gestures)
517517
self.mock.find_main_crash.assert_called_once_with(
518-
self.crashes, 'test', self.context.test_timeout, upload_urls)
518+
self.crashes, None, self.context.test_timeout, upload_urls)
519519
# TODO(metzman): Replace group in calls to _should_create_testcase with a
520520
# proto group.
521521
self.assertFalse(
@@ -530,7 +530,7 @@ def test_reproducible_crash(self):
530530

531531
self.assertEqual(self.crashes[0].gestures, group.main_crash.gestures)
532532
self.mock.find_main_crash.assert_called_once_with(
533-
self.crashes, 'test', self.context.test_timeout, upload_urls)
533+
self.crashes, None, self.context.test_timeout, upload_urls)
534534
self.assertTrue(
535535
fuzz_task._should_create_testcase(group, self.unreproducible_testcase))
536536
self.assertFalse(group.one_time_crasher_flag)
@@ -548,7 +548,7 @@ def test_has_existing_unreproducible_testcase(self):
548548

549549
self.assertEqual(self.crashes[0].gestures, group.main_crash.gestures)
550550
self.mock.find_main_crash.assert_called_once_with(
551-
self.crashes, 'test', self.context.test_timeout, upload_urls)
551+
self.crashes, None, self.context.test_timeout, upload_urls)
552552
self.assertTrue(group.one_time_crasher_flag)
553553

554554

0 commit comments

Comments
 (0)