Skip to content

Conversation

@SuperFola
Copy link
Member

Description

Fixing as many bugs as possible that were discovered by fuzzers earlier this week.

Checklist

  • I have read the Contributor guide
  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • I have updated the documentation if needed (on https://github.com/ArkScript-lang/website, content/docs/)
  • I have added tests that prove my fix/feature is working
  • New and existing tests pass locally with my changes

@github-actions
Copy link

github-actions bot commented Sep 10, 2025

Static analysis report

Lizard report

Listing only functions with cyclomatic complexity >= 15 or NLOC >= 100 or parameters >= 6.

Filename Start line:end line Function name Parameters NLOC CCN
src/arkreactor/VM/VM.cpp 493:2020 Ark::VM::safeRun 3 1277 258
src/arkreactor/Compiler/Macros/Processor.cpp 253:637 Ark::internal::MacroProcessor::evaluate 3 354 122
src/arkreactor/Error/Diagnostics.cpp 43:187 Ark::Diagnostics::makeContext 4 105 43
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 560:734 Ark::internal::ASTLowerer::handleCalls 4 132 43
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 138:241 Ark::internal::ASTLowerer::compileExpression 4 85 27
src/arkreactor/Compiler/Macros/Processor.cpp 102:185 Ark::internal::MacroProcessor::processNode 3 61 27
src/arkreactor/VM/VM.cpp 2139:2243 Ark::VM::backtrace 3 89 22
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 267:326 Ark::internal::ASTLowerer::compileListInstruction 3 49 22
src/arkreactor/Compiler/Macros/Executors/Function.cpp 16:91 Ark::internal::FunctionExecutor::applyMacro 2 55 17
src/arkreactor/Compiler/Macros/Processor.cpp 719:758 Ark::internal::MacroProcessor::isConstEval 1 35 16
src/arkreactor/Compiler/Lowerer/ASTLowerer.cpp 78:94 Ark::internal::ASTLowerer::nodeProducesOutput 1 13 15
src/arkreactor/Compiler/Macros/Executors/Function.cpp 101:158 Ark::internal::FunctionExecutor::unify 5 50 15
src/arkreactor/Error/Diagnostics.cpp 189:202 Ark::Diagnostics::helper 6 13 2
Report about files you didn't modify in this PR
Filename Start line:end line Function name Parameters NLOC CCN
src/arkreactor/Compiler/BytecodeReader.cpp 274:671 Ark::BytecodeReader::display 4 351 105
src/arkscript/JsonCompiler.cpp 27:260 JsonCompiler::_compile 1 200 36
src/arkreactor/Compiler/NameResolution/NameResolutionPass.cpp 161:265 Ark::internal::NameResolutionPass::visitKeyword 3 83 33
src/arkreactor/Compiler/AST/Parser.cpp 807:898 Ark::internal::Parser::string 1 88 32
src/arkscript/main.cpp 23:323 main 2 255 29
src/arkreactor/Compiler/AST/Node.cpp 179:277 Ark::internal::Node::repr 0 84 28
src/arkreactor/Compiler/AST/Node.cpp 279:352 Ark::internal::Node::debugPrint 1 64 24
src/arkreactor/TypeChecker.cpp 110:194 Ark::types::generateError 5 72 24
src/arkreactor/Compiler/NameResolution/NameResolutionPass.cpp 55:159 Ark::internal::NameResolutionPass::visit 2 83 23
src/arkreactor/Compiler/AST/Parser.cpp 288:416 Ark::internal::Parser::import_ 1 98 23
include/utf8.hpp 138:184 utf8::isValid 1 44 21
src/arkreactor/Compiler/AST/Optimizer.cpp 33:83 Ark::internal::Optimizer::countAndPruneDeadCode 1 42 20
src/arkscript/REPL/Utils.cpp 52:184 Ark::internal::getColorPerKeyword 0 110 19
src/arkreactor/VM/Value.cpp 77:140 Ark::Value::toString 1 50 19
src/arkreactor/Compiler/NameResolution/StaticScope.cpp 68:109 Ark::internal::NamespaceScope::get 3 32 19
src/arkreactor/TypeChecker.cpp 28:108 Ark::types::displayContract 4 70 19
include/Ark/Compiler/AST/Predicates.hpp 132:156 Ark::internal::IsSymbol::operator ( ) 1 24 16
src/arkscript/Formatter.cpp 173:229 Formatter::format 3 53 16
src/arkscript/Formatter.cpp 279:320 Formatter::formatFunction 2 35 15
src/arkreactor/Compiler/IntermediateRepresentation/IROptimizer.cpp 12:206 Ark::internal::IROptimizer::IROptimizer 1 170 4

CppCheck report

Filename Line Type Description
include/Ark/VM/VM.inl 253 style Variable 'maybe_value_ptr' can be declared as pointer to const
src/arkreactor/VM/VM.cpp 494 information Limiting ValueFlow analysis in function 'safeRun' since it is too complex. Please specify --check-level=exhaustive to perform full analysis.
src/arkreactor/VM/VM.cpp 372 error Iterators of different containers 'm_execution_contexts.emplace_back(std::make_unique())' and 'm_execution_contexts.front()' are used together.
Report files about files you didn't modify in this PR
Filename Line Type Description
src/arkreactor/Compiler/BytecodeReader.cpp 450 style struct member 'Arg::kind' is never used.
src/arkreactor/Compiler/NameResolution/ScopeResolver.cpp 134 style Consider using std::find_if algorithm instead of a raw loop.
include/Ark/VM/Future.hpp 50 style Unused private function: 'Future::deleteSelfViaVM'
src/arkreactor/VM/Future.cpp 23 performance Variable 'm_value' is assigned in constructor body. Consider performing initialization in initialization list.
src/arkreactor/VM/State.cpp 190 style Consider using std::any_of, std::all_of, std::none_of algorithm instead of a raw loop.

@codspeed-hq
Copy link

codspeed-hq bot commented Sep 10, 2025

CodSpeed Performance Report

Merging #578 will degrade performances by 5.57%

Comparing fix/fuzzer-bugs (3e7259c) with dev (1660912)

Summary

❌ 9 (👁 9) regressions
✅ 8 untouched benchmarks

Benchmarks breakdown

Benchmark BASE HEAD Change
👁 ackermann 311.6 ms 329.9 ms -5.57%
👁 binary_trees 4.7 s 4.8 s -3.39%
👁 builtins 3.7 ms 3.7 ms -2.04%
👁 create_closure 4.6 ms 4.7 ms -3.06%
👁 create_list 6.2 ms 6.3 ms -1.8%
👁 fibonacci 27.7 ms 28.9 ms -4.47%
👁 for_sum 974.7 ms 1,018.7 ms -4.32%
👁 n_queens 111 ms 115.9 ms -4.27%
👁 quicksort 1 ms 1.1 ms -2.44%

@github-actions
Copy link

github-actions bot commented Sep 10, 2025

Fuzzing report

/usr/local/bin/afl-whatsup status check tool for afl-fuzz by Michal Zalewski

Summary stats

    Fuzzers alive : 0
   Dead or remote : 1 (included in stats)
   Total run time : 5 minutes, 0 seconds
      Total execs : 32 thousands
 Cumulative speed : 106 execs/sec
    Pending items : 138 faves, 1369 total
 Coverage reached : 10.72%
    Crashes saved : 0
      Hangs saved : 0

Cycles without finds : 0
Time without finds : 0

[+] Captured 42022 tuples (map size 220662, highest value 255, total values 472443374) in '/dev/null'.
[+] A coverage of 42022 edges were achieved out of 220672 existing (19.04%) with 1380 input files.

@SuperFola SuperFola merged commit 70e9813 into dev Sep 10, 2025
24 checks passed
@SuperFola SuperFola deleted the fix/fuzzer-bugs branch September 10, 2025 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants