Skip to content

Conversation

navyansh007
Copy link
Contributor

@navyansh007 navyansh007 commented Jun 11, 2025

fix(math/strided/special/dfloor): replace stack allocation with dynamic allocation in benchmark

Replace fixed-size array declarations with dynamic memory allocation in the dfloor benchmark to prevent segmentation faults when processing large input sizes. The benchmark previously failed with segmentation faults for arrays with 1,000,000 elements due to stack memory limitations.

Changes:

  • Replace stack-allocated arrays with malloc/free for x and y arrays
  • Add proper error handling for memory allocation failures
  • Add memory cleanup to prevent memory leaks
  • Add error checking in main benchmark loop

Fixes: #7224

…ic allocation in benchmark

  Replace fixed-size array declarations with dynamic memory allocation in
  the dfloor benchmark to prevent segmentation faults when processing
  large input sizes. The benchmark previously failed with segmentation
  faults for arrays with 1,000,000 elements due to stack memory limitations.

  Changes:
  - Replace stack-allocated arrays with malloc/free for x and y arrays
  - Add proper error handling for memory allocation failures
  - Add memory cleanup to prevent memory leaks
  - Add error checking in main benchmark loop

  Fixes: stdlib-js#7224

---
type: pre_commit_static_analysis_report
description: Results of running static analysis checks when committing changes.
report:
  - task: lint_filenames
    status: passed
  - task: lint_editorconfig
    status: passed
  - task: lint_markdown
    status: na
  - task: lint_package_json
    status: na
  - task: lint_repl_help
    status: na
  - task: lint_javascript_src
    status: na
  - task: lint_javascript_cli
    status: na
  - task: lint_javascript_examples
    status: na
  - task: lint_javascript_tests
    status: na
  - task: lint_javascript_benchmarks
    status: na
  - task: lint_python
    status: na
  - task: lint_r
    status: na
  - task: lint_c_src
    status: na
  - task: lint_c_examples
    status: na
  - task: lint_c_benchmarks
    status: missing_dependencies
  - task: lint_c_tests_fixtures
    status: na
  - task: lint_shell
    status: na
  - task: lint_typescript_declarations
    status: na
  - task: lint_typescript_tests
    status: na
  - task: lint_license_headers
    status: passed
---
@stdlib-bot stdlib-bot added the Math Issue or pull request specific to math functionality. label Jun 11, 2025
@stdlib-bot
Copy link
Contributor

👋 Hi there! 👋

And thank you for opening your first pull request! We will review it shortly. 🏃 💨

Getting Started

Next Steps

  1. A project maintainer will approve GitHub Actions workflows for your PR.
  2. All CI checks must pass before your submission can be fully reviewed.
  3. You'll need to address any failures in linting or unit tests.

Running Tests Locally

You can use make to run any of the CI commands locally from the root directory of the stdlib repository:

# Run tests for all packages in the math namespace:
make test TESTS_FILTER=".*/@stdlib/math/.*"

# Run benchmarks for a specific package:
make benchmark BENCHMARKS_FILTER=".*/@stdlib/math/base/special/sin/.*"

If you haven't heard back from us within two weeks, please ping us by tagging the "reviewers" team in a comment on this PR.

If you have any further questions while waiting for a response, please join our Gitter channel to chat with project maintainers and other community members.

We appreciate your contribution!

Documentation Links

@stdlib-bot stdlib-bot added First-time Contributor A pull request from a contributor who has never previously committed to the project repository. Needs Review A pull request which needs code review. labels Jun 11, 2025
@stdlib-bot
Copy link
Contributor

Hello! Thank you for your contribution to stdlib.

We noticed that the contributing guidelines acknowledgment is missing from your pull request. Here's what you need to do:

  1. Please read our contributing guidelines.

  2. Update your pull request description to include this checked box:

    - [x] Read, understood, and followed the [contributing guidelines](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md)

This acknowledgment confirms that you've read the guidelines, which include:

  • The developer's certificate of origin
  • Your agreement to license your contributions under the project's terms

We can't review or accept contributions without this acknowledgment.

Thank you for your understanding and cooperation. We look forward to reviewing your contribution!

@stdlib-bot
Copy link
Contributor

stdlib-bot commented Jun 11, 2025

Coverage Report

Package Statements Branches Functions Lines
math/strided/special/dfloor $\color{green}374/374$
$\color{green}+100.00\%$
$\color{green}15/15$
$\color{green}+100.00\%$
$\color{green}4/4$
$\color{green}+100.00\%$
$\color{green}374/374$
$\color{green}+100.00\%$

The above coverage report was generated for the changes in this PR.

@kgryte kgryte changed the title fix(math/strided/special/dfloor): replace stack allocation with dynam… bench: replace stack allocation with dynamic allocation Jun 13, 2025
@kgryte kgryte added Needs Changes Pull request which needs changes before being merged. and removed Needs Review A pull request which needs code review. labels Jun 13, 2025
@stdlib-bot stdlib-bot removed the First-time Contributor A pull request from a contributor who has never previously committed to the project repository. label Oct 1, 2025
@kgryte
Copy link
Member

kgryte commented Oct 14, 2025

@navyansh007 Would you mind updating this PR to match the dynamic memory allocation changes in this commit: 2c9f492? Cheers!

@kgryte kgryte added the Benchmarks Pull requests adding or improving benchmarks for measuring performance. label Oct 14, 2025
navyansh007 and others added 2 commits October 15, 2025 10:01
---
type: pre_commit_static_analysis_report
description: Results of running static analysis checks when committing changes.
report:
  - task: lint_filenames
    status: passed
  - task: lint_editorconfig
    status: passed
  - task: lint_markdown
    status: na
  - task: lint_package_json
    status: na
  - task: lint_repl_help
    status: na
  - task: lint_javascript_src
    status: na
  - task: lint_javascript_cli
    status: na
  - task: lint_javascript_examples
    status: na
  - task: lint_javascript_tests
    status: na
  - task: lint_javascript_benchmarks
    status: na
  - task: lint_python
    status: na
  - task: lint_r
    status: na
  - task: lint_c_src
    status: na
  - task: lint_c_examples
    status: na
  - task: lint_c_benchmarks
    status: passed
  - task: lint_c_tests_fixtures
    status: na
  - task: lint_shell
    status: na
  - task: lint_typescript_declarations
    status: passed
  - task: lint_typescript_tests
    status: na
  - task: lint_license_headers
    status: passed
---
@navyansh007
Copy link
Contributor Author

Hey @kgryte,
I have updated the malloc statements in the code and changed them to match the way they are written in the commit you mentioned. I request you to have a look at that. Feel free to let me know if any further changes are required.

@kgryte kgryte removed the Needs Changes Pull request which needs changes before being merged. label Oct 15, 2025
@kgryte kgryte merged commit f9011e1 into stdlib-js:develop Oct 15, 2025
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Benchmarks Pull requests adding or improving benchmarks for measuring performance. Math Issue or pull request specific to math functionality.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Segmentation fault in dfloor benchmark at large input size (length =1,000,000)

3 participants